home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / ugoku / src / vdsys / vdxsub.c < prev    next >
C/C++ Source or Header  |  1994-11-16  |  95KB  |  3,515 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <file_dlg.h>
  9. #include <egb.h>
  10. #include <mos.h>
  11. #include <snd.h>
  12. #include "ugoku.h"
  13. #include "vdsysx.h"
  14.  
  15. #define V00TYPE 0        /* V00関係の処理 */
  16. #define MVBTYPE 1        /* MVB関係の処理 */
  17. #define V02TYPE 2        /* V00関係の処理 */
  18. #define DIRTYPE 3        /* 瞬間圧縮 */
  19. #define AFRECTYPE 4        /* アフレコ */
  20.  
  21. extern    char    *guiEgbPtr ;    /*    EGB のワークアドレス    */
  22.  
  23. /* dsk */
  24. int    baseDialogId = -1 ;
  25. int    menubarId = -1 ;
  26. int    menuId = -1 ;
  27. int    mItemId[3] = -1 ;
  28. int    SDKmenuId = -1 ;
  29. int    SDKmItemId[3] = -1 ;
  30. int    fileMenuId = -1 ;
  31. int    fileMItemId[15] = -1 ;
  32. int    editMenuId = -1 ;
  33. int    editMItemId[5] = -1 ;
  34. int    quitIconId = -1 ;
  35. int    wakuDialogId = -1 ;
  36. int    tableSetDialogId = -1 ;
  37. int    tableSetMesId[3] = -1 ;
  38. /* alou */
  39. int    alertId = -1 ;
  40. int    messageId[3] = -1 ;
  41. int    dspIconId = -1 ;
  42. int    aboutOKBtnId = -1 ;
  43. /* err */
  44. int    errorId = -1 ;
  45. int    errorOKBtnId = -1 ;
  46. int    errorIconId = -1 ;
  47. int    errormessage[2] = -1 ;
  48. /* rec */
  49. int    recDialogId = -1 ;
  50. int    recSubDialogId = -1 ;
  51. int    recFrameNumId = -1 ;
  52. int    recMemoryNumId = -1 ;
  53. int    recBtnId[15] = -1 ;
  54. int    recVolumeId = -1 ;
  55. int    recMesId[30] = -1 ;
  56. int    recOkBtnId = -1 ;
  57. int    recCanBtnId = -1 ;
  58. int    recSndDialogId = -1 ;
  59. int    recSndSubDialogId = -1 ;
  60. int    recSndVolumeId = -1 ;
  61. int    recSndOkBtnId = -1 ;
  62. int    recSndCanBtnId = -1 ;
  63. /* org */
  64. int    orgDialogId = -1 ;
  65. int    orgMesId[8] = -1 ;
  66. int    orgOkBtnId = -1 ;
  67. int    orgCanBtnId = -1 ;
  68. int    orgSubDialogId = -1 ;
  69. int    orgFrameNumId = -1 ;
  70. int    orgSoundNumId = -1 ;
  71. int    orgSoundBtnId = -1 ;
  72. /* pac */
  73. int    pacDialogId = -1 ;
  74. int    pacSubDialogId = -1 ;
  75. int    pacFilterBar = -1 ;
  76. int    pacSoftBar = -1 ;
  77. int    pacFilterNumId = -1 ;
  78. int    pacSoftNumId = -1 ;
  79. int    pacMesId[5] = -1 ;
  80. int    pacOKBtnId = -1 ;
  81. int    pacCanBtnId = -1 ;
  82. int    pacWaitDialogId = -1 ;
  83. int    pacWaitMesId[2] = -1 ;
  84. int    pacWaitNumId[2] = -1 ;
  85. /* ply */
  86. int    plyDialogId = -1 ;
  87. int    plySubDialogId = -1 ;
  88. int    plyWaitNumId = -1 ;
  89. int    plyBtnId[4] = -1 ;
  90. int    plyMesId[12] = -1 ;
  91. int    plyFrameNumId = -1 ;
  92. int    plyOkBtnId = -1 ;
  93. int    plyCanBtnId = -1 ;
  94. /* edit */
  95. int    editDialogId = -1 ;
  96. int    editSubDialogId = -1 ;
  97. int    editMinDialogId[10] = -1 ;
  98. int    editMsgId[24] = -1 ;
  99. int    editNumBoxId[2][3] = -1 ;
  100. int    editFileMsgId[3] = -1 ;
  101. int    editBtnId[8] = -1 ;
  102. int    editOkBtnId = -1 ;
  103. int    editCanBtnId = -1 ;
  104. int    editWaitDialogId = -1 ;
  105. int    editWaitMsgId[1] = -1 ;
  106. int    editMosDialogId = -1 ;
  107. int    editMosMsgId[2] = -1 ;
  108.  
  109. int        v02TableFlag ;            /* v02 table flag */
  110. char    *v02Table ;                /* v02 table */
  111.  
  112. int    setFlag ;                    /*    表示設定のフラグ        */
  113. int    wait ;                        /*    ウェイト設定用ワーク    */
  114. int    scnMode ;                    /*    画面モード設定用ワーク    */
  115. int    zoom ;                        /*    倍率設定用ワーク        */
  116. int    playMode ;                    /*    再生モード設定用ワーク    */
  117. int    playFlag ;                    /*    再生中かどうかのフラグ    */
  118. int    loop ;                        /*    ループ再生のフラグ        */
  119.  
  120. char    v00Path[80] = '\0' ;
  121. char    mvbPath[80] = '\0' ;
  122. char    v02Path[80] = '\0' ;
  123. char    v02Path2[80] = '\0' ;
  124.  
  125.  
  126. /*
  127.         IVDREC用基本セット
  128. */
  129.  
  130. static    recType ;    /* V00TYPE, MVBTYPE, DIRTYPE, AFRECTYPE */
  131.  
  132. static int    recFlag ;                    /*    表示設定のフラグ        */
  133. static int    recVol = 127 ;                /*    volume                    */
  134. static int    recFrame = 160 ;            /*    frame数                    */
  135. static int    recMemory = 0 ;                /*    メモリ依存度            */
  136. static int    recMode = 0 ;                /*    画面モード設定用ワーク    */
  137. static int    recSpeed = 1 ;                /*    録画速度                */
  138. static int    recSize = 1 ;                /*    frame size                */
  139. static int    recFreq = 0 ;                /*    Sount freq                */
  140.  
  141. /* frame数を設定 */
  142. /*    initDataIVDREC:recFrameNumId:MJ_NUMBOXL40の呼び出し関数    */
  143. int    recFrameSet(kobj, messId, argc, pev, trigger)
  144. int        kobj ;
  145. int        messId ;
  146. int        argc ;
  147. EVENT    *pev ;
  148. int        trigger ;
  149. {
  150.     int    var, min, max, delta, ptColumn ;
  151.     MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
  152.                                 &var, &min, &max, &delta, &ptColumn ) ;
  153.     recFrame = var ;
  154.     return NOERR ;
  155. }
  156.  
  157. /* Memory Mode */
  158. /*    initDataIVDREC:recMemoryNumId:MJ_NUMBOXL40の呼び出し関数    */
  159. int    recMemorySet(kobj, messId, argc, pev, trigger)
  160. int        kobj ;
  161. int        messId ;
  162. int        argc ;
  163. EVENT    *pev ;
  164. int        trigger ;
  165. {
  166.     int    var, min, max, delta, ptColumn ;
  167.     MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
  168.                                         &var, &min, &max, &delta, &ptColumn ) ;
  169.     recMemory = var ;
  170.     return NOERR ;
  171. }
  172.  
  173. /*    録画モードを設定(ラジオボタン)    */
  174. /*    initDataIVDREC:recBtnId[0]:MJ_TICONL40の呼び出し関数    */
  175. /*    initDataIVDREC:recBtnId[1]:MJ_TICONL40の呼び出し関数    */
  176. /*    initDataIVDREC:recBtnId[2]:MJ_TICONL40の呼び出し関数    */
  177. int    recModeSet(kobj, messId, argc, pev, trigger)
  178. int        kobj ;
  179. int        messId ;
  180. int        argc ;
  181. EVENT    *pev ;
  182. int        trigger ;
  183. {
  184.     if( kobj == recBtnId[0] )
  185.     {
  186.         MTL_setFlagObj( recBtnId[0], MS_UNSELECT ) ;
  187.         MTL_resetFlagObj( recBtnId[recMode+0],
  188.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  189.         MMI_SendMessage( recBtnId[recMode+0], MM_SHOW, 0 ) ;
  190.         recMode = 0 ;
  191.     }
  192.     else
  193.     if( kobj == recBtnId[1] )
  194.     {
  195.         MTL_setFlagObj( recBtnId[1], MS_UNSELECT ) ;
  196.         MTL_resetFlagObj( recBtnId[recMode+0],
  197.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  198.         MMI_SendMessage( recBtnId[recMode+0], MM_SHOW, 0 ) ;
  199.         recMode = 1 ;
  200.     }
  201.     else
  202.     if( kobj == recBtnId[2] )
  203.     {
  204.         MTL_setFlagObj( recBtnId[2], MS_UNSELECT ) ;
  205.         MTL_resetFlagObj( recBtnId[recMode+0],
  206.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  207.         MMI_SendMessage( recBtnId[recMode+0], MM_SHOW, 0 ) ;
  208.         recMode = 2 ;
  209.     }
  210.  
  211.         /* memoryNumを有効にしたり無効にする特別処理 */
  212.  
  213.     if( (recType == V00TYPE) || (recType == MVBTYPE) )
  214.     {
  215.         HYPER hyp ;
  216.         WINCLIP *pwclp ;
  217.  
  218.         if( recMode != 1 )
  219.         {
  220.             MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ;
  221.             MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
  222.             MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
  223.             MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;
  224.             MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
  225.             MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
  226.         }
  227.         else
  228.         {
  229.             MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ;    /* 正常 */
  230.             MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
  231.             MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
  232.         }
  233. //        MMI_SendMessage( recMemoryNumId, MM_SHOW, 0 ) ;
  234.  
  235.         MMI_SendMessage( recMemoryNumId, MM_GETHYPER, 1, &hyp ) ;
  236.         pwclp = WIN_getClipMemory( &(hyp.fr), NULL ) ;
  237.         MMI_SendMessage( recMemoryNumId, MM_UPDATE, 1, pwclp ) ;
  238.         WIN_freeClipMemory( pwclp ) ;
  239.  
  240.         MMI_SendMessage( recMesId[1], MM_SHOW, 0 ) ;
  241.         MMI_SendMessage( recMesId[2], MM_SHOW, 0 ) ;
  242.     }
  243.  
  244.     return NOERR ;
  245. }
  246.  
  247. /*    speedを設定(ラジオボタン)    */
  248. /*    initDataIVDREC:recBtnId[3]:MJ_TICONL40の呼び出し関数    */
  249. /*    initDataIVDREC:recBtnId[4]:MJ_TICONL40の呼び出し関数    */
  250. /*    initDataIVDREC:recBtnId[5]:MJ_TICONL40の呼び出し関数    */
  251. /*    initDataIVDREC:recBtnId[6]:MJ_TICONL40の呼び出し関数    */
  252. int    recSpeedSet(kobj, messId, argc, pev, trigger)
  253. int        kobj ;
  254. int        messId ;
  255. int        argc ;
  256. EVENT    *pev ;
  257. int        trigger ;
  258. {
  259.     if( kobj == recBtnId[3] )
  260.     {
  261.         MTL_setFlagObj( recBtnId[3], MS_UNSELECT ) ;
  262.         MTL_resetFlagObj( recBtnId[recSpeed+3],
  263.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  264.         MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
  265.         recSpeed = 0 ;
  266.     }
  267.     else
  268.     if( kobj == recBtnId[4] )
  269.     {
  270.         MTL_setFlagObj( recBtnId[4], MS_UNSELECT ) ;
  271.         MTL_resetFlagObj( recBtnId[recSpeed+3],
  272.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  273.         MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
  274.         recSpeed = 1 ;
  275.     }
  276.     else
  277.     if( kobj == recBtnId[5] )
  278.     {
  279.         MTL_setFlagObj( recBtnId[5], MS_UNSELECT ) ;
  280.         MTL_resetFlagObj( recBtnId[recSpeed+3],
  281.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  282.         MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
  283.         recSpeed = 2 ;
  284.     }
  285.     else
  286.     if( kobj == recBtnId[6] )
  287.     {
  288.         MTL_setFlagObj( recBtnId[6], MS_UNSELECT ) ;
  289.         MTL_resetFlagObj( recBtnId[recSpeed+3],
  290.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  291.         MMI_SendMessage( recBtnId[recSpeed+3], MM_SHOW, 0 ) ;
  292.         recSpeed = 3 ;
  293.     }
  294.     return NOERR ;
  295. }
  296.  
  297. /*    frame size を設定(ラジオボタン)    */
  298. /*    initDataIVDREC:recBtnId[7~11]:MJ_TICONL40の呼び出し関数    */
  299. int    recFrameSizeSet(kobj, messId, argc, pev, trigger)
  300. int        kobj ;
  301. int        messId ;
  302. int        argc ;
  303. EVENT    *pev ;
  304. int        trigger ;
  305. {
  306.     if( kobj == recBtnId[7] )
  307.     {
  308.         MTL_setFlagObj( recBtnId[7], MS_UNSELECT ) ;
  309.         MTL_resetFlagObj( recBtnId[recSize+7],
  310.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  311.         MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
  312.         recSize = 0 ;
  313.     }
  314.     else
  315.     if( kobj == recBtnId[8] )
  316.     {
  317.         MTL_setFlagObj( recBtnId[8], MS_UNSELECT ) ;
  318.         MTL_resetFlagObj( recBtnId[recSize+7],
  319.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  320.         MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
  321.         recSize = 1 ;
  322.     }
  323.     else
  324.     if( kobj == recBtnId[9] )
  325.     {
  326.         MTL_setFlagObj( recBtnId[9], MS_UNSELECT ) ;
  327.         MTL_resetFlagObj( recBtnId[recSize+7],
  328.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  329.         MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
  330.         recSize = 2 ;
  331.     }
  332.     else
  333.     if( kobj == recBtnId[10] )
  334.     {
  335.         MTL_setFlagObj( recBtnId[10], MS_UNSELECT ) ;
  336.         MTL_resetFlagObj( recBtnId[recSize+7],
  337.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  338.         MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
  339.         recSize = 3 ;
  340.     }
  341.     else
  342.     if( kobj == recBtnId[11] )
  343.     {
  344.         MTL_setFlagObj( recBtnId[11], MS_UNSELECT ) ;
  345.         MTL_resetFlagObj( recBtnId[recSize+7],
  346.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  347.         MMI_SendMessage( recBtnId[recSize+7], MM_SHOW, 0 ) ;
  348.         recSize = 4 ;
  349.     }
  350.     return NOERR ;
  351. }
  352.  
  353. /* sampling feq. 設定(ラジオボタン)    */
  354. /*    initDataIVDREC:recBtnId[12~14]:MJ_TICONL40の呼び出し関数    */
  355. int    recFreqSet(kobj, messId, argc, pev, trigger)
  356. int        kobj ;
  357. int        messId ;
  358. int        argc ;
  359. EVENT    *pev ;
  360. int        trigger ;
  361. {
  362.     if( kobj == recBtnId[12] )
  363.     {
  364.         MTL_setFlagObj( recBtnId[12], MS_UNSELECT ) ;
  365.         MTL_resetFlagObj( recBtnId[recFreq+12],
  366.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  367.         MMI_SendMessage( recBtnId[recFreq+12], MM_SHOW, 0 ) ;
  368.         recFreq = 0 ;
  369.     }
  370.     else
  371.     if( kobj == recBtnId[13] )
  372.     {
  373.         MTL_setFlagObj( recBtnId[13], MS_UNSELECT ) ;
  374.         MTL_resetFlagObj( recBtnId[recFreq+12],
  375.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  376.         MMI_SendMessage( recBtnId[recFreq+12], MM_SHOW, 0 ) ;
  377.         recFreq = 1 ;
  378.     }
  379.     else
  380.     if( kobj == recBtnId[14] )
  381.     {
  382.         MTL_setFlagObj( recBtnId[14], MS_UNSELECT ) ;
  383.         MTL_resetFlagObj( recBtnId[recFreq+12],
  384.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  385.         MMI_SendMessage( recBtnId[recFreq+12], MM_SHOW, 0 ) ;
  386.         recFreq = 2 ;
  387.     }
  388.     return NOERR ;
  389. }
  390.  
  391. /* volumeセット */
  392. /*    initDataIVDREC:recVolumeId:MJ_SCRLL40の呼び出し関数    */
  393. int    recVolumeSet(kobj, messId, argc, pev, trigger)
  394. int        kobj ;
  395. int        messId ;
  396. int        argc ;
  397. EVENT    *pev ;
  398. int        trigger ;
  399. {
  400.     int    var, min, max, len, page, s ;
  401.     MMI_SendMessage( kobj, MM_GETSCROLL, 5,
  402.                                         &var, &min, &max, &len, &page ) ;
  403.     recVol = var ;
  404.  
  405.     if( recVol )        /* line volume set */
  406.         SND_elevol_set( 0, recVol, recVol );
  407.     else
  408.     {
  409.         SND_get_elevol_mute( &s ) ;
  410.         SND_elevol_mute( s & 0xfffffff3 ) ;
  411.     }
  412.     return NOERR ;
  413. }
  414.  
  415. /*    設定するか、取り消すか?    */
  416. /*    initDataIVDREC:recOkBtnId:MJ_DBUTTONL40の呼び出し関数    */
  417. /*    initDataIVDREC:recCanBtnId:MJ_DBUTTONL40の呼び出し関数    */
  418. int    recOkchk(kobj, messId, argc, pev, trigger)
  419. int        kobj ;
  420. int        messId ;
  421. int        argc ;
  422. EVENT    *pev ;
  423. int        trigger ;
  424. {
  425.     if( (kobj == recOkBtnId) || (kobj == recSndOkBtnId) )
  426.         recFlag = TRUE ;
  427.     else
  428.         recFlag = FALSE ;
  429.     MMI_SetHaltFlag( TRUE ) ;
  430.     return NOERR ;
  431. }
  432.  
  433.  
  434. /*
  435.         IVDORG基本セット
  436. */
  437.  
  438. static    int        orgFlag ;            /* OK or NO */
  439. static    int        orgSndOfst ;        /* Sound Offset */
  440. static    char    *orgPath ;            /* file name */
  441.  
  442. /*    設定するか、取り消すか?    */
  443. /*    initDataIVDORG:orgOkBtnId:MJ_DBUTTONL40の呼び出し関数    */
  444. /*    initDataIVDORG:orgCanBtnId:MJ_DBUTTONL40の呼び出し関数    */
  445. int    orgOkchk(kobj, messId, argc, pev, trigger)
  446. int        kobj ;
  447. int        messId ;
  448. int        argc ;
  449. EVENT    *pev ;
  450. int        trigger ;
  451. {
  452.     if( kobj == orgOkBtnId )
  453.         orgFlag = TRUE ;
  454.     else
  455.         orgFlag = FALSE ;
  456.     MMI_SetHaltFlag( TRUE ) ;
  457.     return NOERR ;
  458. }
  459.  
  460. /* Sound offset を設定 */
  461. /*    initDataIVDORG:orgSoundNumId:MJ_NUMBOXL40の呼び出し関数    */
  462. int    orgSoundSet(kobj, messId, argc, pev, trigger)
  463. int        kobj ;
  464. int        messId ;
  465. int        argc ;
  466. EVENT    *pev ;
  467. int        trigger ;
  468. {
  469.     int    var, min, max, delta, ptColumn ;
  470.     MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
  471.                                         &var, &min, &max, &delta, &ptColumn ) ;
  472.     orgSndOfst = var ;
  473.     return NOERR ;
  474. }
  475.  
  476. /* Sound offset 書き込み */
  477. /*    initDataIVDORG:orgSoundBtnId:MJ_DBUTTONL40の呼び出し関数    */
  478. int    orgSoundwriteOK(kobj, messId, argc, pev, trigger)
  479. int        kobj ;
  480. int        messId ;
  481. int        argc ;
  482. EVENT    *pev ;
  483. int        trigger ;
  484. {
  485.     FILE *fp ;
  486.     char names[100], buf[8] ;
  487.  
  488.     /* Sound offset の 書き込み */
  489.     if( file_kakuchousi_set( names, orgPath, ".SND" ) )
  490.     {
  491.         errorCheck( 2 ) ;
  492.         return NOERR;
  493.     }
  494.     if( ( fp = fopen( names, "r+b" ) ) == NULL )
  495.     {
  496.         errorCheck( 2 ) ;
  497.         return NOERR;
  498.     }
  499.     fseek( fp, 16, SEEK_SET );
  500.     DWORD( buf ) = orgSndOfst ;
  501.     DWORD( buf+4 ) = 0 ;
  502.     if( fwrite( buf, 8, 1, fp ) < 1 )
  503.     {
  504.         fclose(fp) ;
  505.         errorCheck( 2 ) ;
  506.         return NOERR;
  507.     }
  508.     fclose(fp) ;
  509.  
  510.     return NOERR ;
  511. }
  512.  
  513.  
  514. /*
  515.         IVDPAC基本セット
  516. */
  517.  
  518. static int pacFlag ;            /* YES or NO */
  519. static int pacFilter = 3 ;        /* filer */
  520. static int pacSoft = 5 ;        /* soft */
  521.  
  522. /*    filter */
  523. /*    initDataIVDPAC:pacFilterBar:MJ_SCRLL40の呼び出し関数    */
  524. int    pacFilterSet(kobj, messId, argc, pev, trigger)
  525. int        kobj ;
  526. int        messId ;
  527. int        argc ;
  528. EVENT    *pev ;
  529. int        trigger ;
  530. {
  531.     int    var, min, max, len, page ;
  532.     MMI_SendMessage( kobj, MM_GETSCROLL, 5,
  533.                                         &var, &min, &max, &len, &page ) ;
  534.     pacFilter = var*3 / 16 ;    /* var * 値の初期値 / バーの初期値 */
  535.     MMI_SendMessage( pacFilterNumId, MM_SETNUMBOX, 5,
  536.                      pacFilter, 0, pacFilter, 1, 0 ) ;
  537.                     /*    var, min, max, delta, ptColumn */
  538.     MMI_SendMessage( pacFilterNumId, MM_SHOW, 0 ) ;
  539.  
  540.     return NOERR ;
  541. }
  542.  
  543. /* soft */
  544. /*    initDataIVDPAC:pacSoftBar:MJ_SCRLL40の呼び出し関数    */
  545. int    pacSoftSet(kobj, messId, argc, pev, trigger)
  546. int        kobj ;
  547. int        messId ;
  548. int        argc ;
  549. EVENT    *pev ;
  550. int        trigger ;
  551. {
  552.     int    var, min, max, len, page ;
  553.     MMI_SendMessage( kobj, MM_GETSCROLL, 5,
  554.                                         &var, &min, &max, &len, &page ) ;
  555.     pacSoft = var*3 / 16 ;    /* var * 値の初期値 / バーの初期値 */
  556.     MMI_SendMessage( pacSoftNumId, MM_SETNUMBOX, 5,
  557.                      pacSoft, 0, pacSoft, 1, 0 ) ;
  558.                     /*    var, min, max, delta, ptColumn */
  559.     MMI_SendMessage( pacSoftNumId, MM_SHOW, 0 ) ;
  560.  
  561.     return NOERR ;
  562. }
  563.  
  564. /*    設定するか、取り消すか?    */
  565. /*    initDataIVDPAC:pacOKBtnId:MJ_DBUTTONL40の呼び出し関数    */
  566. /*    initDataIVDPAC:pacCanBtnId:MJ_DBUTTONL40の呼び出し関数    */
  567. int    pacOKchk(kobj, messId, argc, pev, trigger)
  568. int        kobj ;
  569. int        messId ;
  570. int        argc ;
  571. EVENT    *pev ;
  572. int        trigger ;
  573. {
  574.     if( kobj == pacOKBtnId )
  575.         pacFlag = TRUE ;
  576.     else
  577.         pacFlag = FALSE ;
  578.     MMI_SetHaltFlag( TRUE ) ;
  579.     return NOERR ;
  580. }
  581.  
  582.  
  583. /*
  584.         IVDPLY基本セット
  585. */
  586.  
  587. static    int        plyFlag ;            /* YES or NO */
  588. static    int        plyWait = 0 ;        /* wait */
  589. static    int        plyMul = 1 ;        /* mul */
  590.  
  591. /*    initDataIVDPLY:plyWaitNumId:MJ_NUMBOXL40の呼び出し関数    */
  592. int    plyWaitSet(kobj, messId, argc, pev, trigger)
  593. int        kobj ;
  594. int        messId ;
  595. int        argc ;
  596. EVENT    *pev ;
  597. int        trigger ;
  598. {
  599.     int    var, min, max, delta, ptColumn ;
  600.     MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
  601.                                         &var, &min, &max, &delta, &ptColumn ) ;
  602.     plyWait = var ;
  603.     return NOERR ;
  604. }
  605.  
  606. /*    frameSize設定(ラジオボタン)    */
  607. /*    initDataIVDPLY:plyBtnId[0]:MJ_TICONL40の呼び出し関数    */
  608. /*    initDataIVDPLY:plyBtnId[1]:MJ_TICONL40の呼び出し関数    */
  609. /*    initDataIVDPLY:plyBtnId[2]:MJ_TICONL40の呼び出し関数    */
  610. /*    initDataIVDPLY:plyBtnId[3]:MJ_TICONL40の呼び出し関数    */
  611. int    plyMulSet(kobj, messId, argc, pev, trigger)
  612. int        kobj ;
  613. int        messId ;
  614. int        argc ;
  615. EVENT    *pev ;
  616. int        trigger ;
  617. {
  618.     if( kobj == plyBtnId[0] )
  619.     {
  620.         MTL_setFlagObj( plyBtnId[0], MS_UNSELECT ) ;
  621.         MTL_resetFlagObj( plyBtnId[plyMul+0],
  622.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  623.         MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
  624.         plyMul = 0 ;
  625.     }
  626.     else
  627.     if( kobj == plyBtnId[1] )
  628.     {
  629.         MTL_setFlagObj( plyBtnId[1], MS_UNSELECT ) ;
  630.         MTL_resetFlagObj( plyBtnId[plyMul+0],
  631.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  632.         MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
  633.         plyMul = 1 ;
  634.     }
  635.     else
  636.     if( kobj == plyBtnId[2] )
  637.     {
  638.         MTL_setFlagObj( plyBtnId[2], MS_UNSELECT ) ;
  639.         MTL_resetFlagObj( plyBtnId[plyMul+0],
  640.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  641.         MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
  642.         plyMul = 2 ;
  643.     }
  644.     else
  645.     if( kobj == plyBtnId[3] )
  646.     {
  647.         MTL_setFlagObj( plyBtnId[3], MS_UNSELECT ) ;
  648.         MTL_resetFlagObj( plyBtnId[plyMul+0],
  649.                                  (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  650.         MMI_SendMessage( plyBtnId[plyMul+0], MM_SHOW, 0 ) ;
  651.         plyMul = 3 ;
  652.     }
  653.     return NOERR ;
  654. }
  655.  
  656. /*    設定するか、取り消すか?    */
  657. /*    initDataIVDPLY:plyOkBtnId:MJ_DBUTTONL40の呼び出し関数    */
  658. /*    initDataIVDPLY:plyCanBtnId:MJ_DBUTTONL40の呼び出し関数    */
  659. int    plyPlaychk(kobj, messId, argc, pev, trigger)
  660. int        kobj ;
  661. int        messId ;
  662. int        argc ;
  663. EVENT    *pev ;
  664. int        trigger ;
  665. {
  666.     if( kobj == plyOkBtnId )
  667.         plyFlag = TRUE ;
  668.     else
  669.         plyFlag = FALSE ;
  670.  
  671.     MMI_SetHaltFlag( TRUE ) ;
  672.     return NOERR ;
  673. }
  674.  
  675.  
  676. /*
  677.         IVDEDT基本セット
  678. */
  679.  
  680. static    int        editType ;            /* V00TYPE, MVBTYPE */
  681. static    int        editFlag ;            /* YES or NO */
  682. static    char    v00EditPath[3][100] = '\0' ;    /* file */
  683. static    char    mvbEditPath[3][100] = '\0' ;    /* file */
  684. static    char    v02EditPath[3][100] = '\0' ;    /* file */
  685. static    char    dummyEditPath[3][100] = '\0' ;    /* 表示用(字数over等に対応) */
  686. static    int        v00EditNum[2][3] = 0 ;            /* file data number */
  687. static    int        mvbEditNum[2][3] = 0 ;            /* file data number */
  688. static    int        v02EditNum[2][3] = 0 ;            /* file data number */
  689.  
  690. /*    ファイル設定    */
  691. /*    initDataIVDEDT:editBtnId[0]:MJ_DBUTTONL40の呼び出し関数    */
  692. /*    initDataIVDEDT:editBtnId[1]:MJ_DBUTTONL40の呼び出し関数    */
  693. /*    initDataIVDEDT:editBtnId[2]:MJ_DBUTTONL40の呼び出し関数    */
  694. int    editFileInput(kobj, messId, argc, pev, trigger)
  695. int        kobj ;
  696. int        messId ;
  697. int        argc ;
  698. EVENT    *pev ;
  699. int        trigger ;
  700. {
  701.     char            *ExtStr0[] = { "*.V00", NULL } ;
  702.     char            *ExtStr1[] = { "*.MVB", NULL } ;
  703.     char            *ExtStr2[] = { "*.V02", NULL } ;
  704.     char            path[100] ;
  705.     int             i, type ;    /* 第1,第2,合成の区別 */
  706.     int                ret ;
  707.  
  708.     for( i=0 ; i<3 ; i++ )
  709.     {
  710.         if( kobj == editBtnId[i] )
  711.         {
  712.             type = i ;
  713.             break ;
  714.         }
  715.     }
  716.     if( type >= 3 )return NOERR ;
  717.  
  718.     MTL_setAtrObj( editDialogId, MS_DSPONLYL40 ) ;
  719.  
  720.     if( editType == V00TYPE )
  721.     {
  722.         ret = fileSelecter(v00EditPath[ type ], ExtStr0,
  723.                      "VOOファイル", "選  択", "取  消");
  724.         if(    ret == NOERR )
  725.         {
  726.             /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  727.             file_kakuchousi_set( path, v00EditPath[ type ], ".V00" ) ;
  728.             for( i=0 ; i<80 ; i++ )
  729.                 v00EditPath[ type ][ i ] = path[i] ;
  730.             setDummyPath( v00EditPath[type], dummyEditPath[type] ) ;
  731.         }
  732.     }
  733.  
  734.     if( editType == MVBTYPE )
  735.     {
  736.         ret = fileSelecter(mvbEditPath[ type ], ExtStr1,
  737.                      "MVBファイル", "選  択", "取  消");
  738.         if(    ret == NOERR )
  739.         {
  740.             /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  741.             file_kakuchousi_set( path, mvbEditPath[ type ], ".MVB" ) ;
  742.             for( i=0 ; i<80 ; i++ )
  743.                 mvbEditPath[ type ][ i ] = path[i] ;
  744.             setDummyPath( mvbEditPath[type], dummyEditPath[type] ) ;
  745.         }
  746.     }
  747.  
  748.     if( editType == V02TYPE )
  749.     {
  750.         ret = fileSelecter(v02EditPath[ type ], ExtStr2,
  751.                      "VO2ファイル", "選  択", "取  消");
  752.         if(    ret == NOERR )
  753.         {
  754.             /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  755.             file_kakuchousi_set( path, v02EditPath[ type ], ".V02" ) ;
  756.             for( i=0 ; i<80 ; i++ )
  757.                 v02EditPath[ type ][ i ] = path[i] ;
  758.             setDummyPath( v02EditPath[type], dummyEditPath[type] ) ;
  759.         }
  760.     }
  761.  
  762.     if( ret == NOERR )
  763.     {
  764.         editDialogSet( type, 0 ) ;
  765.         MMI_SendMessage( editMinDialogId[type], MM_SHOW, 0 ) ;
  766.         if( type <= 1 )
  767.         {
  768.             for( i=0 ; i<3 ; i++ )
  769.                 MMI_SendMessage( editNumBoxId[type][i], MM_SHOW, 0 ) ;
  770.             MMI_SendMessage( editMinDialogId[type+3], MM_SHOW, 0 ) ;
  771.         }
  772.     }
  773.  
  774.     MTL_resetAtrObj( editDialogId, (~MS_DSPONLYL40) ) ;
  775.  
  776.     return NOERR ;
  777. }
  778.  
  779. /*    再生    */
  780. /*    initDataIVDEDT:editBtnId[3]:MJ_DBUTTONL40の呼び出し関数    */
  781. /*    initDataIVDEDT:editBtnId[4]:MJ_DBUTTONL40の呼び出し関数    */
  782. /*    initDataIVDEDT:editBtnId[5]:MJ_DBUTTONL40の呼び出し関数    */
  783. int    editPlaychk(kobj, messId, argc, pev, trigger)
  784. int        kobj ;
  785. int        messId ;
  786. int        argc ;
  787. EVENT    *pev ;
  788. int        trigger ;
  789. {
  790.     int             i, type ;    /* 第1,第2,合成の区別 */
  791.     int                ret ;
  792.  
  793.     for( i=3 ; i<6 ; i++ )
  794.     {
  795.         if( kobj == editBtnId[i] )
  796.         {
  797.             type = i - 3 ;
  798.             break ;
  799.         }
  800.     }
  801.     if( type >= 3 )return NOERR ;
  802.  
  803.     MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  804.     MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  805.  
  806.     if( editType == V00TYPE )
  807.     {
  808.         int frame, x, y, wt ;
  809.         int dummy ;
  810.  
  811.         if( type <= 1 )
  812.             ret = v00_head_read_skip( v00EditPath[type],
  813.                              &frame, &x, &y, &wt, v00EditNum[type][1] ) ;
  814.         else                                                 /* data収集 */
  815.             ret = v00_head_read( v00EditPath[type], &frame, &x, &y, &wt ) ;
  816.  
  817.         if( ret == NOERR )
  818.         {
  819.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  820.  
  821.             MG_mosDisp( 0 ) ;
  822.             if( type <= 1 )
  823.                 ret = v00_play2( v00EditPath[type],
  824.                      v00EditNum[type][1], v00EditNum[type][2], &dummy, 0 );
  825.             else
  826.                 ret = v00_play2( v00EditPath[type], 0, 0x7fffffff, &dummy, 0 );
  827.  
  828.             MG_mosDisp( 1 ) ;
  829.         }
  830.     }
  831.  
  832.     if( editType == MVBTYPE )
  833.     {
  834.         int frame, x, y, wt ;
  835.  
  836.         if( type <= 1 )
  837.             ret = mvb_head_read_skip( mvbEditPath[type],
  838.                              &frame, &x, &y, &wt, mvbEditNum[type][1] ) ;
  839.         else                                                 /* data収集 */
  840.             ret = mvb_head_read( mvbEditPath[type],
  841.                              &frame, &x, &y, &wt ) ;
  842.         if( ret == NOERR )
  843.         {
  844.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  845.  
  846.             MG_mosDisp( 0 ) ;
  847.             if( type <= 1 )
  848.                 ret = mvb_play2( mvbEditPath[type],
  849.                      mvbEditNum[type][1], mvbEditNum[type][2], 0 );
  850.             else
  851.                 ret = mvb_play2( mvbEditPath[type], 0, 0x7fffffff, 0 );
  852.  
  853.             MG_mosDisp( 1 ) ;
  854.         }
  855.     }
  856.  
  857.     if( editType == V02TYPE )
  858.     {
  859.         int frame, x, y, wt, koma, freq, sndpack ;
  860.  
  861.         if( type <= 1 )
  862.         {
  863.             ret = v02_head_read_only( v02EditPath[type],
  864.                          &frame, &x, &y, &wt, &koma, &freq, &sndpack ) ;
  865.             if( ret == NOERR )
  866.             {
  867.                 v02_graph_init( 2, x, y ) ;    /* 倍率にあわせて画面設定 */
  868.                 MG_mosDisp( 0 ) ;
  869.                 ret = v02_play2( v02EditPath[type], 2, 0,
  870.                      v02EditNum[type][1], v02EditNum[type][2] );
  871.                 MG_mosDisp( 1 ) ;
  872.                 v_waku_clear( x, y, 2 ) ;        /* 枠抜きしたことにする */
  873.             }            /* 本当は既に枠抜けてるが,閉めるためのだまし効果 */
  874.         }
  875.         else
  876.         {
  877.             ret = v02_wide_head_read_and_dsp( v02EditPath[type],
  878.                          &frame, &x, &y, &wt, 1, TL_malloc, TL_free ) ;
  879.             if( ret == NOERR )
  880.             {
  881.                 v02_graph_init( 2, x, y ) ;    /* 倍率にあわせて画面設定 */
  882.                 v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  883.                 MG_mosDisp( 0 ) ;
  884.                 ret = v02_play( v02EditPath[type], 2, 0 ) ;
  885.                 MG_mosDisp( 1 ) ;
  886.             }
  887.         }
  888.     }
  889.  
  890.     MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  891.     /* マウスが押されていれば次のイベントを無視 */
  892.     if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  893.  
  894.     if( ret == NOERR )
  895.     {
  896.         MMI_SendMessage( editMosDialogId, MM_ATTACH, 1, MMI_GetBaseObj());
  897.         MMI_SendMessage( editMosDialogId, MM_SHOW, 0 ) ;
  898.  
  899.         MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  900.  
  901.         MMI_SendMessage( editMosDialogId, MM_ERASE, 0 ) ;
  902.         MMI_SendMessage( editMosDialogId, MM_DETACH, 0 ) ;
  903.     }
  904.  
  905.     r_waku_del() ; /* 枠を閉める */
  906.  
  907.     MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  908.     MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;        /* 全体を見せる */
  909.  
  910.     if( ret )
  911.         errorCheck( ret ) ;
  912.  
  913.     return NOERR ;
  914. }
  915.  
  916. /*     再生終了確認 */
  917. /*    initDataIVDEDT:editBtnId[7]:MJ_DBUTTONL40の呼び出し関数    */
  918. int    editPlayEnd(kobj, messId, argc, pev, trigger)
  919. int        kobj ;
  920. int        messId ;
  921. int        argc ;
  922. EVENT    *pev ;
  923. int        trigger ;
  924. {
  925.     MMI_SetHaltFlag( TRUE ) ;
  926.     return NOERR ;
  927. }
  928.  
  929. /*    数値設定    */
  930. /*    initDataIVDEDT:editNumBoxId[0][1]:MJ_NUMBOXL40の呼び出し関数    */
  931. /*    initDataIVDEDT:editNumBoxId[0][2]:MJ_NUMBOXL40の呼び出し関数    */
  932. /*    initDataIVDEDT:editNumBoxId[1][1]:MJ_NUMBOXL40の呼び出し関数    */
  933. /*    initDataIVDEDT:editNumBoxId[1][2]:MJ_NUMBOXL40の呼び出し関数    */
  934. int    editFileNumSet(kobj, messId, argc, pev, trigger)
  935. int        kobj ;
  936. int        messId ;
  937. int        argc ;
  938. EVENT    *pev ;
  939. int        trigger ;
  940. {
  941.     int    i, j, type, num ;
  942.     int    var, min, max, delta, ptColumn ;
  943.  
  944.     type = -1 ;
  945.     for( i=0 ; i<2 ; i++ )
  946.     {
  947.         for( j=1 ; j<3 ; j++ )
  948.         {
  949.             if( kobj == editNumBoxId[i][j] )
  950.             {
  951.                 type = i ;
  952.                 num = j ;
  953.             }
  954.         }
  955.     }
  956.     if( type == -1 )return NOERR ;
  957.  
  958.     MMI_SendMessage(kobj, MM_GETNUMBOX,
  959.                      5, &var, &min, &max, &delta, &ptColumn);
  960.  
  961.     if( editType == V00TYPE )
  962.         v00EditNum[type][num] = var ;
  963.  
  964.     if( editType == MVBTYPE )
  965.         mvbEditNum[type][num] = var ;
  966.  
  967.     if( editType == V02TYPE )
  968.         v02EditNum[type][num] = var ;
  969.  
  970.     return NOERR ;
  971. }
  972.  
  973. /*    ファイル消去 */
  974. /*    initDataIVDEDT:editBtnId[6]:MJ_DBUTTONL40の呼び出し関数    */
  975. int    editFileDel(kobj, messId, argc, pev, trigger)
  976. int        kobj ;
  977. int        messId ;
  978. int        argc ;
  979. EVENT    *pev ;
  980. int        trigger ;
  981. {
  982.     int i ;
  983.  
  984.     if( editType == V00TYPE )
  985.         v00EditPath[1][0] = '\0' ;
  986.     if( editType == MVBTYPE )
  987.         mvbEditPath[1][0] = '\0' ;
  988.     if( editType == V02TYPE )
  989.         v02EditPath[1][0] = '\0' ;
  990.     dummyEditPath[1][0] = '\0' ;    /* 表示用も消す */
  991.  
  992.     editDialogSet( 1, 0 ) ;
  993.     MMI_SendMessage( editMinDialogId[1], MM_SHOW, 0 ) ;
  994.     for( i=0 ; i<3 ; i++ )
  995.         MMI_SendMessage( editNumBoxId[1][i], MM_SHOW, 0 ) ;
  996.     MMI_SendMessage( editMinDialogId[4], MM_SHOW, 0 ) ;
  997.  
  998.     return NOERR ;
  999. }
  1000.  
  1001. /*    設定するか、取り消すか?    */
  1002. /*    initDataIVDEDT:editOkBtnId:MJ_DBUTTONL40の呼び出し関数    */
  1003. /*    initDataIVDEDT:editCanBtnId:MJ_DBUTTONL40の呼び出し関数    */
  1004. int    editOkchk(kobj, messId, argc, pev, trigger)
  1005. int        kobj ;
  1006. int        messId ;
  1007. int        argc ;
  1008. EVENT    *pev ;
  1009. int        trigger ;
  1010. {
  1011.     if( kobj == editOkBtnId )
  1012.         editFlag = TRUE ;
  1013.     else
  1014.         editFlag = FALSE ;
  1015.  
  1016.     MMI_SetHaltFlag( TRUE ) ;
  1017.     return NOERR ;
  1018. }
  1019.  
  1020. /*    各種セッティング    */
  1021. int editDialogSet( t, m )        /* t:type(0~2) 第1,第2,合成の区別 */
  1022. int t, m ;                        /* m:mode 0ならframeClear 1ならframe変更なし */
  1023. {
  1024.     int ret ;
  1025.  
  1026.     static char speed[][20] = {     "毎秒8.6フレーム",
  1027.                                     "毎秒 10フレーム",
  1028.                                     "毎秒 12フレーム",
  1029.                                     "毎秒 15フレーム"
  1030.                         } ;
  1031.     static char waku[][20] = {         "128× 96ドット",
  1032.                                      "160×120ドット",
  1033.                                      "192×144ドット",
  1034.                                      "256×192ドット",
  1035.                                      "320×240ドット"
  1036.                        } ;
  1037.     static char non[4] = "\0" ;
  1038.  
  1039.  
  1040.     if( editType == V00TYPE )
  1041.     {
  1042.  
  1043.         int frame, x, y, wt ;
  1044.  
  1045.         setDummyPath( v00EditPath[t], dummyEditPath[t] ) ;
  1046.         MMI_SendMessage( editFileMsgId[t], MM_SETMSG, 1, dummyEditPath[t] );
  1047.         if( t <= 1 )
  1048.         {
  1049.             int    var, min, max, delta, ptColumn ;
  1050.  
  1051.             ret = v00_head_read_only( v00EditPath[t], &frame, &x, &y, &wt ) ;
  1052.             if( ret )
  1053.             {
  1054.                 frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
  1055.             }
  1056.  
  1057.             if( frame >= 0 )
  1058.                 MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
  1059.                         frame, 0, frame, 1, 0 ) ;
  1060.             else
  1061.                 MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
  1062.                         -1, -1, 0, 1, 0 ) ;
  1063.             if( wt >= 4 && wt <= 7 )            /* 毎秒フレーム数表示 */
  1064.                 MMI_SendMessage(editMsgId[t*2+1],MM_SETMSG,1,speed[7-wt]);
  1065.             else
  1066.                 MMI_SendMessage(editMsgId[t*2+1], MM_SETMSG, 1, non );
  1067.             if( x == 128 && y == 96 )            /* 画面の大きさ表示 */
  1068.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[0]);
  1069.             else if( x == 160 && y == 120 )
  1070.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[1]);
  1071.             else if( x == 192 && y == 144 )
  1072.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[2]);
  1073.             else if( x == 256 && y == 192 )
  1074.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[3]);
  1075.             else if( x == 320 && y == 240 )
  1076.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[4]);
  1077.             else
  1078.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, non) ;
  1079.  
  1080.             if( m == 0 )
  1081.             {
  1082.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1083.                 if( max < min )max = min ;
  1084.                 if( frame < 0 )max = 99999 ;
  1085.                 var = min ;
  1086.                 MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
  1087.                      5, var, min, max, delta, ptColumn);
  1088.                 MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
  1089.                      5, &var, &min, &max, &delta, &ptColumn);
  1090.                 v00EditNum[t][1] = var ;
  1091.  
  1092.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1093.                 if( max < min )max = min ;
  1094.                 if( frame < 0 )max = 99999 ;
  1095.                 var = max ;
  1096.                 MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
  1097.                      5, var, min, max, delta, ptColumn);
  1098.                 MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
  1099.                      5, &var, &min, &max, &delta, &ptColumn);
  1100.                 v00EditNum[t][2] = var ;
  1101.             }
  1102.             else
  1103.             {
  1104.  
  1105.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1106.                 if( max < min )max = min ;
  1107.                 if( frame < 0 )max = 99999 ;
  1108.                 var = v00EditNum[t][1] ;
  1109.                 MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
  1110.                      5, var, min, max, delta, ptColumn);
  1111.                 MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
  1112.                      5, &var, &min, &max, &delta, &ptColumn);
  1113.                 v00EditNum[t][1] = var ;
  1114.  
  1115.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1116.                 if( max < min )max = min ;
  1117.                 if( frame < 0 )max = 99999 ;
  1118.                 var = v00EditNum[t][2] ;
  1119.                 MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
  1120.                      5, var, min, max, delta, ptColumn);
  1121.                 MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
  1122.                      5, &var, &min, &max, &delta, &ptColumn);
  1123.                 v00EditNum[t][2] = var ;
  1124.  
  1125.             }
  1126.         }
  1127.     }
  1128.  
  1129.     if( editType == MVBTYPE )
  1130.     {
  1131.  
  1132.         int frame, x, y, wt ;
  1133.  
  1134.         setDummyPath( mvbEditPath[t], dummyEditPath[t] ) ;
  1135.         MMI_SendMessage( editFileMsgId[t], MM_SETMSG, 1, dummyEditPath[t] );
  1136.         if( t <= 1 )
  1137.         {
  1138.             int    var, min, max, delta, ptColumn ;
  1139.  
  1140.             ret = mvb_head_read_only( mvbEditPath[t], &frame, &x, &y, &wt ) ;
  1141.             if( ret )
  1142.             {
  1143.                 frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
  1144.             }
  1145.  
  1146.             if( frame >= 0 )
  1147.                 MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
  1148.                         frame, 0, frame, 1, 0 ) ;
  1149.             else
  1150.                 MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
  1151.                         -1, -1, 0, 1, 0 ) ;
  1152.             if( wt >= 4 && wt <= 7 )            /* 毎秒フレーム数表示 */
  1153.                 MMI_SendMessage(editMsgId[t*2+1],MM_SETMSG,1,speed[7-wt]);
  1154.             else
  1155.                 MMI_SendMessage(editMsgId[t*2+1], MM_SETMSG, 1, non );
  1156.             if( x == 128 && y == 96 )            /* 画面の大きさ表示 */
  1157.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[0]);
  1158.             else if( x == 160 && y == 120 )
  1159.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[1]);
  1160.             else if( x == 192 && y == 144 )
  1161.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[2]);
  1162.             else if( x == 256 && y == 192 )
  1163.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[3]);
  1164.             else if( x == 320 && y == 240 )
  1165.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[4]);
  1166.             else
  1167.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, non) ;
  1168.  
  1169.             if( m == 0 )
  1170.             {
  1171.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1172.                 if( max < min )max = min ;
  1173.                 var = min ;
  1174.                 MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
  1175.                      5, var, min, max, delta, ptColumn);
  1176.                 MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
  1177.                      5, &var, &min, &max, &delta, &ptColumn);
  1178.                 mvbEditNum[t][1] = var ;
  1179.  
  1180.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1181.                 if( max < min )max = min ;
  1182.                 var = max ;
  1183.                 MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
  1184.                      5, var, min, max, delta, ptColumn);
  1185.                 MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
  1186.                      5, &var, &min, &max, &delta, &ptColumn);
  1187.                 mvbEditNum[t][2] = var ;
  1188.             }
  1189.             else
  1190.             {
  1191.  
  1192.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1193.                 if( max < min )max = min ;
  1194.                 var = mvbEditNum[t][1] ;
  1195.                 MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
  1196.                      5, var, min, max, delta, ptColumn);
  1197.                 MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
  1198.                      5, &var, &min, &max, &delta, &ptColumn);
  1199.                 mvbEditNum[t][1] = var ;
  1200.  
  1201.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1202.                 if( max < min )max = min ;
  1203.                 var = mvbEditNum[t][2] ;
  1204.                 MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
  1205.                      5, var, min, max, delta, ptColumn);
  1206.                 MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
  1207.                      5, &var, &min, &max, &delta, &ptColumn);
  1208.                 mvbEditNum[t][2] = var ;
  1209.             }
  1210.         }
  1211.     }
  1212.  
  1213.     if( editType == V02TYPE )
  1214.     {
  1215.  
  1216.         int frame, x, y, wt ;
  1217.  
  1218.         setDummyPath( v02EditPath[t], dummyEditPath[t] ) ;
  1219.         MMI_SendMessage( editFileMsgId[t], MM_SETMSG, 1, dummyEditPath[t] );
  1220.         if( t <= 1 )
  1221.         {
  1222.             int    var, min, max, delta, ptColumn, koma, freq, sndpack ;
  1223.  
  1224.             ret = v02_head_read_only( v02EditPath[t], &frame, &x, &y, &wt,
  1225.                                         &koma, &freq, &sndpack ) ;
  1226.             if( ret )
  1227.             {
  1228.                 frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
  1229.             }
  1230.  
  1231.             if( frame >= 0 )
  1232.                 MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
  1233.                         frame, 0, frame, 1, 0 ) ;
  1234.             else
  1235.                 MMI_SendMessage( editNumBoxId[t][0], MM_SETNUMBOX, 5,
  1236.                         -1, -1, 0, 1, 0 ) ;
  1237.             if( wt >= 4 && wt <= 7 )            /* 毎秒フレーム数表示 */
  1238.                 MMI_SendMessage(editMsgId[t*2+1],MM_SETMSG,1,speed[7-wt]);
  1239.             else
  1240.                 MMI_SendMessage(editMsgId[t*2+1], MM_SETMSG, 1, non );
  1241.             if( x == 128 && y == 96 )            /* 画面の大きさ表示 */
  1242.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[0]);
  1243.             else if( x == 160 && y == 120 )
  1244.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[1]);
  1245.             else if( x == 192 && y == 144 )
  1246.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[2]);
  1247.             else if( x == 256 && y == 192 )
  1248.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[3]);
  1249.             else if( x == 320 && y == 240 )
  1250.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, waku[4]);
  1251.             else
  1252.                 MMI_SendMessage(editMsgId[t*2+2], MM_SETMSG, 1, non) ;
  1253.  
  1254.             if( m == 0 )
  1255.             {
  1256.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1257.                 if( max < min )max = min ;
  1258.                 var = min ;
  1259.                 MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
  1260.                      5, var, min, max, delta, ptColumn);
  1261.                 MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
  1262.                      5, &var, &min, &max, &delta, &ptColumn);
  1263.                 v02EditNum[t][1] = var ;
  1264.  
  1265.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1266.                 if( max < min )max = min ;
  1267.                 var = max ;
  1268.                 MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
  1269.                      5, var, min, max, delta, ptColumn);
  1270.                 MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
  1271.                      5, &var, &min, &max, &delta, &ptColumn);
  1272.                 v02EditNum[t][2] = var ;
  1273.             }
  1274.             else
  1275.             {
  1276.  
  1277.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1278.                 if( max < min )max = min ;
  1279.                 var = v02EditNum[t][1] ;
  1280.                 MMI_SendMessage(editNumBoxId[t][1], MM_SETNUMBOX,
  1281.                      5, var, min, max, delta, ptColumn);
  1282.                 MMI_SendMessage(editNumBoxId[t][1], MM_GETNUMBOX,
  1283.                      5, &var, &min, &max, &delta, &ptColumn);
  1284.                 v02EditNum[t][1] = var ;
  1285.  
  1286.                 min = 0 ; max = frame -1 ; delta = 1 ; ptColumn = 0 ;
  1287.                 if( max < min )max = min ;
  1288.                 var = v02EditNum[t][2] ;
  1289.                 MMI_SendMessage(editNumBoxId[t][2], MM_SETNUMBOX,
  1290.                      5, var, min, max, delta, ptColumn);
  1291.                 MMI_SendMessage(editNumBoxId[t][2], MM_GETNUMBOX,
  1292.                      5, &var, &min, &max, &delta, &ptColumn);
  1293.                 v02EditNum[t][2] = var ;
  1294.             }
  1295.         }
  1296.     }
  1297.  
  1298.     return NOERR ;
  1299. }
  1300.  
  1301. /*    各種セッティングのサブ(pathを字数オーバしなようにdummyにセットする) */
  1302.  
  1303. setDummyPath( path, dummy )
  1304. char *path ;
  1305. char *dummy ;
  1306. {
  1307.     int i, j ;
  1308.  
  1309.     for( i=0 ; i<80 ; i++ )
  1310.     {
  1311.         dummy[i] = path[i] ;
  1312.         if( path[i] == '\0' )break ;
  1313.     }
  1314.     if( i <= 40 )return NOERR ;
  1315.  
  1316.     i -= 40 ;
  1317.     for( j=0 ; j<40 ; j++ )
  1318.     {
  1319.         dummy[j] = path[i++] ;
  1320.         if( dummy[j] == '\0' )break ;
  1321.         if( j < 5 )dummy[j] = '.' ;
  1322.     }
  1323.     if( j == 40 )dummy[j] = '\0' ;
  1324.     return NOERR ;
  1325. }
  1326.  
  1327.  
  1328.  
  1329. /*    v00録画ダイアログ表示    */
  1330. int    selectFunc0(kobj, messId, argc, pev, trigger)
  1331. int        kobj ;
  1332. int        messId ;
  1333. int        argc ;
  1334. EVENT    *pev ;
  1335. int        trigger ;
  1336. {
  1337.     char path[100] ;
  1338.     char            *ExtStr[] = { "*.V00", NULL } ;
  1339.     int i, ret ;
  1340.  
  1341.     /* メニューとボタンを使えないようにする */
  1342.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  1343.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  1344.  
  1345.     MMI_SendMessage( recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
  1346.                             recFrame, 0, 999999, 1, 0 ) ;
  1347.                     /*    var, min, max, delta, ptColumn */
  1348.  
  1349.     ret = fileSelecter(v00Path, ExtStr, "VOOファイル", "選  択", "取  消");
  1350.     if(    ret )
  1351.     {
  1352.         /* メニューとボタンを使えるように戻す */
  1353.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1354.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1355.         return NOERR ;
  1356.     }
  1357.     else
  1358.     {
  1359.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  1360.         file_kakuchousi_set( path, v00Path, ".V00" ) ;
  1361.         for( i=0 ; i<80 ; i++ )
  1362.             v00Path[i] = path[i] ;
  1363.     }
  1364.  
  1365.     recType = V00TYPE ;            /* IVDREC基本セットがrecTypeを参照する */
  1366.     MMI_SendMessage( recMesId[0], MM_SETMSG, 1, "VOO 録 画" ) ;
  1367.  
  1368.     MMI_SendMessage( recDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  1369.  
  1370.     MTL_setFlagObj( recBtnId[recMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
  1371.     MTL_setFlagObj( recBtnId[recSpeed+3], (MS_UNSELECT | MS_TOGGLE) ) ;
  1372.     MTL_setFlagObj( recBtnId[recSize+7], (MS_UNSELECT | MS_TOGGLE) ) ;
  1373.     MTL_setFlagObj( recBtnId[recFreq+12], (MS_UNSELECT | MS_TOGGLE) ) ;
  1374.  
  1375.     MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ;    /* 1~2bit clear */
  1376.     MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
  1377.     MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
  1378.     MTL_resetAtrObj( recMesId[3], (~MS_DSPONLYL40) ) ;
  1379.     MTL_resetAtrObj( recMesId[4], (~MS_DSPONLYL40) ) ;
  1380.     MTL_resetAtrObj( recMesId[5], (~MS_DSPONLYL40) ) ;
  1381.     MTL_resetAtrObj( recMesId[6], (~MS_DSPONLYL40) ) ;
  1382.     MTL_resetAtrObj( recBtnId[12], (~MS_DSPONLYL40) ) ;
  1383.     MTL_resetAtrObj( recBtnId[13], (~MS_DSPONLYL40) ) ;
  1384.     MTL_resetAtrObj( recBtnId[14], (~MS_DSPONLYL40) ) ;
  1385.     if( recMode != 1 )
  1386.     {
  1387.         MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;
  1388.         MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
  1389.         MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
  1390.     }
  1391.     MTL_setAtrObj( recMesId[3], MS_INACTIVEL40 ) ;
  1392.     MTL_setAtrObj( recMesId[4], MS_INACTIVEL40 ) ;
  1393.     MTL_setAtrObj( recMesId[5], MS_INACTIVEL40 ) ;
  1394.     MTL_setAtrObj( recMesId[6], MS_INACTIVEL40 ) ;
  1395.     MTL_setAtrObj( recBtnId[12], MS_INACTIVEL40 ) ;
  1396.     MTL_setAtrObj( recBtnId[13], MS_INACTIVEL40 ) ;
  1397.     MTL_setAtrObj( recBtnId[14], MS_INACTIVEL40 ) ;
  1398.     MMI_SendMessage( recDialogId, MM_SHOW, 0 ) ;            /* 全体を見せる */
  1399.  
  1400.     SND_elevol_set( 0, recVol, recVol );
  1401.  
  1402.     MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  1403.  
  1404.     MMI_SendMessage( recDialogId, MM_ERASE, 0 ) ;
  1405.     MMI_SendMessage( recDialogId, MM_DETACH, 0 ) ;
  1406.  
  1407.     if( recFlag == TRUE )
  1408.     {
  1409.         r_waku_del() ; /* 枠を閉める */
  1410.  
  1411.         MG_mosDisp( 0 ) ;
  1412.  
  1413.         switch( recMode )
  1414.         {
  1415.         case 0:    ret = v00_digit_snd_save( v00Path, recFrame, recSize+1,
  1416.                                                             7-recSpeed ) ;
  1417.                 break ;
  1418.         case 1:    if( recMemory == 0 )
  1419.                     ret = v00_digit_save_0( v00Path, recFrame, recSize+1,
  1420.                                                             7-recSpeed ) ;
  1421.                 if( recMemory > 0 && recMemory < 100 )
  1422.                     ret = v00_digit_save_2( v00Path, recFrame, recSize+1,
  1423.                                                             7-recSpeed ) ;
  1424.                 if( recMemory == 100 )
  1425.                     ret = v00_digit_save_3( v00Path, recFrame, recSize+1,
  1426.                                                             7-recSpeed ) ;
  1427.                 break ;
  1428.         case 2:    ret = file_kakuchousi_set( path, v00Path, ".SND" ) ;
  1429.                 if( ret == NOERR )
  1430.                     ret = v00_pcm_snd_save( path, recFrame, 7-recSpeed ) ;
  1431.                 break ;
  1432.         }
  1433.         displayClearAndReset() ;
  1434.         setPalette( guiEgbPtr ) ;
  1435.         diplayRecov() ;
  1436.  
  1437.         if( ret == NOERR )
  1438.         {
  1439.             int frame, x, y, wt ;
  1440.  
  1441.             ret = v00_head_read( v00Path, &frame, &x, &y, &wt ) ;
  1442.             if( ret == NOERR )
  1443.                 v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  1444.             else
  1445.                 ret = NOERR ; /* 録音のみの場合,原画がナクテモERRORにできない */
  1446.         }
  1447.  
  1448.         MG_mosDisp( 1 ) ;
  1449.  
  1450.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  1451.         /* マウスが押されていれば次のイベントを無視 */
  1452.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  1453.  
  1454.         if( ret )
  1455.             errorCheck( ret ) ;
  1456.     }
  1457.  
  1458.     /* メニューとボタンを使えるように戻す */
  1459.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1460.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1461.  
  1462.     int s ;                        /* なくてもいいけど念のため */
  1463.     SND_get_elevol_mute( &s ) ;
  1464.     SND_elevol_mute( s & 0xfffffff3 ) ;
  1465.  
  1466.     return NOERR ;
  1467. }
  1468.  
  1469. /*    v00再生ダイアログ表示    */
  1470. int    selectFunc1(kobj, messId, argc, pev, trigger)
  1471. int        kobj ;
  1472. int        messId ;
  1473. int        argc ;
  1474. EVENT    *pev ;
  1475. int        trigger ;
  1476. {
  1477.     int    i, ret ;
  1478.     char path[100] ;
  1479.     char            *ExtStr[] = { "*.V00", NULL } ;
  1480.  
  1481.     /* メニューとボタンを使えないようにする */
  1482.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  1483.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  1484.  
  1485.     ret = fileSelecter(v00Path, ExtStr, "VOOファイル", "再  生", "取  消");
  1486.     if( ret )
  1487.     {
  1488.         /* メニューとボタンを使えるように戻す */
  1489.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1490.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1491.         return NOERR ;
  1492.     }
  1493.     else
  1494.     {
  1495.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  1496.         file_kakuchousi_set( path, v00Path, ".V00" ) ;
  1497.         for( i=0 ; i<80 ; i++ )
  1498.         {
  1499.             v00Path[i] = path[i] ;
  1500.             orgPath = v00Path ;        /* recPathは基本セットが参照する */
  1501.         }
  1502.     }
  1503.  
  1504.     MMI_SendMessage( orgMesId[0], MM_SETMSG, 1, "VOO 再 生" ) ;
  1505.  
  1506.     if(    ret == NOERR )
  1507.     {
  1508.         int fdummy, frame, x, y, wt, max ;
  1509.         char names[100], head[32] ;
  1510.         char speed[][20] = {     "毎秒8.6フレーム",
  1511.                                 "毎秒 10フレーム",
  1512.                                 "毎秒 12フレーム",
  1513.                                 "毎秒 15フレーム"
  1514.                         } ;
  1515.         char waku[][20] = {     "128× 96ドット",
  1516.                                  "160×120ドット",
  1517.                                  "192×144ドット",
  1518.                                  "256×192ドット",
  1519.                                  "320×240ドット"
  1520.                        } ;
  1521.         char non[4] = "\0" ;
  1522.         FILE *fp ;
  1523.  
  1524.         r_waku_del() ; /* 枠を閉める */
  1525.         ret = v00_head_read( v00Path, &frame, &x, &y, &wt ) ;    /* data収集 */
  1526.         if( ret )
  1527.         {
  1528.             frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
  1529.         }
  1530.  
  1531.         if( frame >= 0 )
  1532.             MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
  1533.                             frame, 0, frame, 1, 0 ) ;
  1534.         else
  1535.             MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
  1536.                             -1, -1, 0, 1, 0 ) ;
  1537.             /*    var, min, max, delta, ptColumn フレーム数表示 */
  1538.  
  1539.         if( wt >= 4 && wt <= 7 )            /* 毎秒フレーム数表示 */
  1540.             MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, speed[7-wt] ) ;
  1541.         else
  1542.             MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, non ) ;
  1543.  
  1544.         if( x == 128 && y == 96 )            /* 画面の大きさ表示 */
  1545.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[0] ) ;
  1546.         else if( x == 160 && y == 120 )
  1547.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[1] ) ;
  1548.         else if( x == 192 && y == 144 )
  1549.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[2] ) ;
  1550.         else if( x == 256 && y == 192 )
  1551.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[3] ) ;
  1552.         else if( x == 320 && y == 240 )
  1553.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[4] ) ;
  1554.         else
  1555.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, non ) ;
  1556.  
  1557.         /* Sound offset の 取得 */
  1558.         orgSndOfst = 0 ;
  1559.         max = 99999 ;
  1560.         if( file_kakuchousi_set( names, v00Path, ".SND" ) )goto vd00 ;
  1561.         if( ( fp = fopen( names, "rb" ) ) == NULL )goto vd00 ;
  1562.         if( fread( head, 32, 1, fp ) < 1 )
  1563.         {
  1564.             fclose(fp);
  1565.             goto vd00;
  1566.         }
  1567.         max = DWORD( head+12 ) ;
  1568.         orgSndOfst = DWORD( head+16 ) ;
  1569.         fclose(fp);
  1570. vd00:    MMI_SendMessage( orgSoundNumId, MM_SETNUMBOX, 5,
  1571.                             orgSndOfst, 0, max, 1, 0 ) ;
  1572.                         /*    var, min, max, delta, ptColumn */
  1573.  
  1574.         if( ret == NOERR )
  1575.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  1576. org01:    MG_mosDisp( 0 ) ;
  1577.         if( ret == NOERR )
  1578.         {
  1579.             ret = v00_play( v00Path, orgSndOfst, &fdummy, 0 );
  1580.             /* 名前, 音ずれ, フレーム数をバック, wait */
  1581.         }
  1582.  
  1583.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  1584.         /* マウスが押されていれば次のイベントを無視 */
  1585. //        if( mouseSwCheck() )TL_setInvalidMosFlag() ; /* ボタンヲ放シテ終ワルカライラナイ */
  1586.  
  1587.         if( ret == NOERR )
  1588.         {
  1589.             MMI_SendMessage( orgDialogId, MM_ATTACH, 1,
  1590.                                              MMI_GetBaseObj() ) ;
  1591.             MMI_SendMessage( orgDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  1592.             MG_mosDisp( 1 ) ;
  1593.             MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  1594.  
  1595.             MMI_SendMessage( orgDialogId, MM_ERASE, 0 ) ;
  1596.             MMI_SendMessage( orgDialogId, MM_DETACH, 0 ) ;
  1597.  
  1598.             if( orgFlag == TRUE )
  1599.                 goto org01 ;
  1600.         }
  1601.     }
  1602.  
  1603.     /* メニューとボタンを使えるように戻す */
  1604.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1605.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1606.  
  1607.     if( ret )
  1608.             errorCheck( ret ) ;
  1609.     return NOERR ;
  1610. }
  1611.  
  1612. /*        V00圧縮ダイアログ表示    */
  1613. int    selectFunc2(kobj, messId, argc, pev, trigger)
  1614. int        kobj ;
  1615. int        messId ;
  1616. int        argc ;
  1617. EVENT    *pev ;
  1618. int        trigger ;
  1619. {
  1620.     int    i, ret, packmode ;
  1621.     char path[100] ;
  1622.     char            *ExtStr0[] = { "*.V00", NULL } ;
  1623.     char            *ExtStr1[] = { "*.V02", NULL } ;
  1624.  
  1625.     if( kobj == fileMItemId[13] )
  1626.         packmode = 1 ;
  1627.     else
  1628.         packmode = 0 ;
  1629.  
  1630.     /* メニューとボタンを使えないようにする */
  1631.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  1632.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  1633.  
  1634.     ret = fileSelecter(v00Path, ExtStr0, "VOOファイル", "選  択", "取  消");
  1635.     if( ret )
  1636.     {
  1637.         /* メニューとボタンを使えるように戻す */
  1638.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1639.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1640.         return NOERR ;
  1641.     }
  1642.     else
  1643.     {
  1644.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  1645.         file_kakuchousi_set( path, v00Path, ".V00" ) ;
  1646.         for( i=0 ; i<80 ; i++ )
  1647.             v00Path[i] = path[i] ;
  1648.     }
  1649.  
  1650.     if( packmode )
  1651.     {
  1652.         MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "VOO 瞬 間 圧 縮" ) ;
  1653.         MTL_setAtrObj( pacFilterBar, MS_INACTIVEL40 ) ;
  1654.         MTL_setAtrObj( pacSoftBar, MS_INACTIVEL40 ) ;
  1655.         MTL_setAtrObj( pacFilterNumId, MS_INACTIVEL40 ) ;
  1656.         MTL_setAtrObj( pacSoftNumId, MS_INACTIVEL40 ) ;
  1657.         MTL_resetAtrObj( pacMesId[1], (~MS_DSPONLYL40) ) ;
  1658.         MTL_setAtrObj( pacMesId[1], MS_INACTIVEL40 ) ;
  1659.         MTL_resetAtrObj( pacMesId[2], (~MS_DSPONLYL40) ) ;
  1660.         MTL_setAtrObj( pacMesId[2], MS_INACTIVEL40 ) ;
  1661.     }
  1662.     else
  1663.     {
  1664.         MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "VOO 圧 縮" ) ;
  1665.         MTL_resetAtrObj( pacFilterBar, (~MS_DSPONLYL40) ) ;
  1666.         MTL_resetAtrObj( pacSoftBar, (~MS_DSPONLYL40) ) ;
  1667.         MTL_resetAtrObj( pacFilterNumId, (~MS_DSPONLYL40) ) ;
  1668.         MTL_resetAtrObj( pacSoftNumId, (~MS_DSPONLYL40) ) ;
  1669.         MTL_setAtrObj( pacMesId[1], MS_DSPONLYL40 ) ;
  1670.         MTL_setAtrObj( pacMesId[2], MS_DSPONLYL40 ) ;
  1671.     }
  1672.  
  1673.     if(    ret == NOERR )
  1674.     {
  1675.         int frame, x, y, wt ;
  1676.  
  1677.         r_waku_del() ; /* 枠を閉める */
  1678.         ret = v00_head_read( v00Path, &frame, &x, &y, &wt ) ;
  1679.  
  1680.         if( ret == NOERR )
  1681.         {
  1682.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  1683.  
  1684.             ret = fileSelecter( v02Path, ExtStr1,
  1685.                 "VO2ファイル名", "選  択", "取  消" );
  1686.             if( ret )
  1687.             {                /* 中止する */
  1688.                 /* メニューとボタンを使えるように戻す */
  1689.                 MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1690.                 MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1691.                 return NOERR ;
  1692.             }
  1693.             /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  1694.             file_kakuchousi_set( path, v02Path, ".V02" ) ;
  1695.             for( i=0 ; i<80 ; i++ )
  1696.                 v02Path[i] = path[i] ;
  1697.         }
  1698.         else goto v10 ;
  1699.  
  1700.         MMI_SendMessage( pacDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  1701.         MMI_SendMessage( pacDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  1702.  
  1703.         MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  1704.  
  1705.         MMI_SendMessage( pacDialogId, MM_ERASE, 0 ) ;    /* 消す */
  1706.         MMI_SendMessage( pacDialogId, MM_DETACH, 0 ) ;
  1707.  
  1708.         if( pacFlag == TRUE )
  1709.         {
  1710.             MMI_SendMessage( pacWaitNumId[0], MM_SETNUMBOX, 5,
  1711.                         frame, 0, frame, 1, 0 ) ;    /* 原画フレーム数設定 */
  1712.                     /*    var, min, max, delta, ptColumn */
  1713.             MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
  1714.                         0, 0, frame, 1, 0 ) ;        /* 圧縮フレーム数設定 */
  1715.                     /*    var, min, max, delta, ptColumn */
  1716.  
  1717.             MMI_SendMessage( pacWaitDialogId, MM_ATTACH,
  1718.                                              1, MMI_GetBaseObj() ) ;
  1719.             MMI_SendMessage( pacWaitDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  1720.  
  1721.             SetMouse16( 81, 0xf, 0x8 ) ;    /* マウスカーソルをウエイト表示 */
  1722.  
  1723.             if( v02TableFlag )
  1724.                 ret = v00_to_v02_t( v00Path, v02Path,
  1725.                     pacFilter, pacSoft, 6, 0, v02Table, packmode ) ;
  1726.             else
  1727.                 ret = v00_to_v02( v00Path, v02Path,
  1728.                     pacFilter, pacSoft, 6, 0, packmode ) ;
  1729.  
  1730.             SetMouse16( 80, 0xf, 0x8 ) ;    /* マウスカーソルを元に */
  1731.  
  1732.             MMI_SendMessage( pacWaitDialogId, MM_ERASE, 0 ) ;    /* 消す */
  1733.             MMI_SendMessage( pacWaitDialogId, MM_DETACH, 0 ) ;
  1734.         }
  1735.     }
  1736.  
  1737.     MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  1738.     /* マウスが押されていれば次のイベントを無視 */
  1739.     if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  1740.  
  1741.     /* メニューとボタンを使えるように戻す */
  1742. v10:
  1743.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1744.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1745.  
  1746.     if( ret )
  1747.             errorCheck( ret ) ;
  1748.     return NOERR ;
  1749. }
  1750.  
  1751.     /*    mvb録画ダイアログ表示    */
  1752. int    selectFunc3(kobj, messId, argc, pev, trigger)
  1753. int        kobj ;
  1754. int        messId ;
  1755. int        argc ;
  1756. EVENT    *pev ;
  1757. int        trigger ;
  1758. {
  1759.     char path[100] ;
  1760.     char            *ExtStr[] = { "*.MVB", NULL } ;
  1761.     int i, ret ;
  1762.  
  1763.     /* メニューとボタンを使えないようにする */
  1764.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  1765.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  1766.  
  1767.     MMI_SendMessage( recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
  1768.                             recFrame, 0, 999999, 1, 0 ) ;
  1769.                     /*    var, min, max, delta, ptColumn */
  1770.  
  1771.     ret = fileSelecter(mvbPath, ExtStr, "MVBファイル", "選  択", "取  消");
  1772.     if(    ret )
  1773.     {
  1774.         /* メニューとボタンを使えるように戻す */
  1775.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1776.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1777.         return NOERR ;
  1778.     }
  1779.     else
  1780.     {
  1781.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  1782.         file_kakuchousi_set( path, mvbPath, ".MVB" ) ;
  1783.         for( i=0 ; i<80 ; i++ )
  1784.             mvbPath[i] = path[i] ;
  1785.     }
  1786.  
  1787.     recType = MVBTYPE ;            /* IVDREC基本セットがrecTypeを参照する */
  1788.     MMI_SendMessage( recMesId[0], MM_SETMSG, 1, "MVB 録 画" ) ;
  1789.  
  1790.     MMI_SendMessage( recDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  1791.  
  1792.     MTL_setFlagObj( recBtnId[recMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
  1793.     MTL_setFlagObj( recBtnId[recSpeed+3], (MS_UNSELECT | MS_TOGGLE) ) ;
  1794.     MTL_setFlagObj( recBtnId[recSize+7], (MS_UNSELECT | MS_TOGGLE) ) ;
  1795.  
  1796.     MTL_resetFlagObj( recBtnId[12], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  1797.     MTL_resetFlagObj( recBtnId[13], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  1798.     MTL_resetFlagObj( recBtnId[14], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  1799.     if( recFreq >= 2 )recFreq = 0 ;
  1800.     MTL_setFlagObj( recBtnId[recFreq+12], (MS_UNSELECT | MS_TOGGLE) ) ;
  1801.  
  1802.     MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ;    /* 1~2bit clear */
  1803.     MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
  1804.     MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
  1805.     MTL_resetAtrObj( recMesId[3], (~MS_DSPONLYL40) ) ;
  1806.  
  1807.     MTL_resetAtrObj( recMesId[4], (~MS_DSPONLYL40) ) ;
  1808.     MTL_setAtrObj( recMesId[4], MS_DSPONLYL40 ) ;
  1809.  
  1810.     MTL_resetAtrObj( recMesId[5], (~MS_DSPONLYL40) ) ;
  1811.     MTL_setAtrObj( recMesId[5], MS_DSPONLYL40 ) ;
  1812.  
  1813.     MTL_resetAtrObj( recMesId[6], (~MS_DSPONLYL40) ) ;
  1814.     MTL_setAtrObj( recMesId[6], MS_INACTIVEL40 ) ;
  1815.  
  1816.     MTL_resetAtrObj( recBtnId[12], (~MS_DSPONLYL40) ) ;
  1817.     MTL_resetAtrObj( recBtnId[13], (~MS_DSPONLYL40) ) ;
  1818.  
  1819.     MTL_resetAtrObj( recBtnId[14], (~MS_DSPONLYL40) ) ;
  1820.     MTL_setAtrObj( recBtnId[14], MS_INACTIVEL40 ) ;
  1821.  
  1822.     if( recMode != 1 )
  1823.     {
  1824.         MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;
  1825.         MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
  1826.         MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
  1827.     }
  1828.  
  1829.     MMI_SendMessage( recDialogId, MM_SHOW, 0 ) ;            /* 全体を見せる */
  1830.  
  1831.     SND_elevol_set( 0, recVol, recVol );
  1832.  
  1833.     MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  1834.  
  1835.     MMI_SendMessage( recDialogId, MM_ERASE, 0 ) ;
  1836.     MMI_SendMessage( recDialogId, MM_DETACH, 0 ) ;
  1837.  
  1838.     if( recFlag == TRUE )
  1839.     {
  1840.         r_waku_del() ; /* 枠を閉める */
  1841.  
  1842.         MG_mosDisp( 0 ) ;
  1843.  
  1844.         switch( recMode )
  1845.         {
  1846.         case 0:    ret = mvb_digit_snd_save( mvbPath, recFrame, recSize+1,
  1847.                                                     recFreq, 7-recSpeed ) ;
  1848.                 break ;
  1849.         case 1:    if( recMemory == 0 )
  1850.                     ret = mvb_digit_save_0( mvbPath, recFrame, recSize+1,
  1851.                                                             7-recSpeed ) ;
  1852.                 if( recMemory > 0 && recMemory < 100 )
  1853.                     ret = mvb_digit_save_2( mvbPath, recFrame, recSize+1,
  1854.                                                             7-recSpeed ) ;
  1855.                 if( recMemory == 100 )
  1856.                     ret = mvb_digit_save_3( mvbPath, recFrame, recSize+1,
  1857.                                                             7-recSpeed ) ;
  1858.                 break ;
  1859.         case 2:    ret = file_kakuchousi_set( path, mvbPath, ".SND" ) ;
  1860.                 if( ret == NOERR )
  1861.                     ret = mvb_pcm_snd_save( path, recFrame,
  1862.                                                  7-recSpeed, recFreq ) ;
  1863.                 break ;
  1864.         }
  1865.         displayClearAndReset() ;
  1866.         setPalette( guiEgbPtr ) ;
  1867.         diplayRecov() ;
  1868.  
  1869.         if( ret == NOERR )
  1870.         {
  1871.             int frame, x, y, wt ;
  1872.  
  1873.             ret = mvb_head_read( mvbPath, &frame, &x, &y, &wt ) ;
  1874.  
  1875.             if( ret == NOERR )
  1876.                 v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  1877.             else
  1878.                 ret = NOERR ; /* 録音のみの場合,原画がナクテモERRORにできない */
  1879.         }
  1880.  
  1881.         MG_mosDisp( 1 ) ;
  1882.  
  1883.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  1884.         /* マウスが押されていれば次のイベントを無視 */
  1885.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  1886.  
  1887.         if( ret )
  1888.             errorCheck( ret ) ;
  1889.     }
  1890.  
  1891.     /* メニューとボタンを使えるように戻す */
  1892.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1893.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1894.  
  1895.     int s ;                        /* なくてもいいけど念のため */
  1896.     SND_get_elevol_mute( &s ) ;
  1897.     SND_elevol_mute( s & 0xfffffff3 ) ;
  1898.  
  1899.     return NOERR ;
  1900. }
  1901.  
  1902. /*    mvb再生ダイアログ表示    */
  1903. int    selectFunc4(kobj, messId, argc, pev, trigger)
  1904. int        kobj ;
  1905. int        messId ;
  1906. int        argc ;
  1907. EVENT    *pev ;
  1908. int        trigger ;
  1909. {
  1910.     int    i, ret ;
  1911.     char path[100] ;
  1912.     char            *ExtStr[] = { "*.MVB", NULL } ;
  1913.  
  1914.     /* メニューとボタンを使えないようにする */
  1915.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  1916.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  1917.  
  1918.     ret = fileSelecter(mvbPath, ExtStr, "MVBファイル", "再  生", "取  消");
  1919.     if( ret )
  1920.     {
  1921.         /* メニューとボタンを使えるように戻す */
  1922.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  1923.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  1924.         return NOERR ;
  1925.     }
  1926.     else
  1927.     {
  1928.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  1929.         file_kakuchousi_set( path, mvbPath, ".MVB" ) ;
  1930.         for( i=0 ; i<80 ; i++ )
  1931.         {
  1932.             mvbPath[i] = path[i] ;
  1933.             orgPath = mvbPath ;        /* orgPathは基本セットが参照する */
  1934.         }
  1935.     }
  1936.  
  1937.     MMI_SendMessage( orgMesId[0], MM_SETMSG, 1, "MVB 再 生" ) ;
  1938.  
  1939.     if(    ret == NOERR )
  1940.     {
  1941.         int frame, x, y, wt, max ;
  1942.         char names[100], head[32] ;
  1943.         char speed[][20] = {     "毎秒8.6フレーム",
  1944.                                 "毎秒 10フレーム",
  1945.                                 "毎秒 12フレーム",
  1946.                                 "毎秒 15フレーム"
  1947.                         } ;
  1948.         char waku[][20] = {     "128× 96ドット",
  1949.                                  "160×120ドット",
  1950.                                  "192×144ドット",
  1951.                                  "256×192ドット",
  1952.                                  "320×240ドット"
  1953.                        } ;
  1954.         char non[4] = "\0" ;
  1955.         FILE *fp ;
  1956.  
  1957.         r_waku_del() ; /* 枠を閉める */
  1958.         ret = mvb_head_read( mvbPath, &frame, &x, &y, &wt ) ;    /* data収集 */
  1959.         if( ret )
  1960.         {
  1961.             frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
  1962.         }
  1963.  
  1964.         if( frame >= 0 )
  1965.             MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
  1966.                             frame, 0, frame, 1, 0 ) ;
  1967.         else
  1968.             MMI_SendMessage( orgFrameNumId, MM_SETNUMBOX, 5,
  1969.                             -1, -1, 0, 1, 0 ) ;
  1970.             /*    var, min, max, delta, ptColumn フレーム数表示 */
  1971.  
  1972.         if( wt >= 4 && wt <= 7 )            /* 毎秒フレーム数表示 */
  1973.             MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, speed[7-wt] ) ;
  1974.         else
  1975.             MMI_SendMessage( orgMesId[1], MM_SETMSG, 1, non ) ;
  1976.  
  1977.         if( x == 128 && y == 96 )            /* 画面の大きさ表示 */
  1978.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[0] ) ;
  1979.         else if( x == 160 && y == 120 )
  1980.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[1] ) ;
  1981.         else if( x == 192 && y == 144 )
  1982.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[2] ) ;
  1983.         else if( x == 256 && y == 192 )
  1984.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[3] ) ;
  1985.         else if( x == 320 && y == 240 )
  1986.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, waku[4] ) ;
  1987.         else
  1988.             MMI_SendMessage( orgMesId[2], MM_SETMSG, 1, non ) ;
  1989.  
  1990.         /* Sound offset の 取得 */
  1991.         orgSndOfst = 0 ;
  1992.         max = 99999 ;
  1993.         if( file_kakuchousi_set( names, mvbPath, ".SND" ) )goto vd00 ;
  1994.         if( ( fp = fopen( names, "rb" ) ) == NULL )goto vd00 ;
  1995.         if( fread( head, 32, 1, fp ) < 1 )
  1996.         {
  1997.             fclose(fp);
  1998.             goto vd00;
  1999.         }
  2000.         max = DWORD( head+12 ) ;
  2001.         orgSndOfst = DWORD( head+16 ) ;
  2002.         fclose(fp);
  2003. vd00:    MMI_SendMessage( orgSoundNumId, MM_SETNUMBOX, 5,
  2004.                             orgSndOfst, 0, max, 1, 0 ) ;
  2005.                         /*    var, min, max, delta, ptColumn */
  2006.  
  2007.         if( ret == NOERR )
  2008.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  2009. org01:    MG_mosDisp( 0 ) ;
  2010.         if( ret == NOERR )
  2011.         {
  2012.             ret = mvb_play( mvbPath, orgSndOfst, 0 );
  2013.             /* 名前, 音ずれ, wait */
  2014.         }
  2015.  
  2016.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2017.         /* マウスが押されていれば次のイベントを無視 */
  2018. //        if( mouseSwCheck() )TL_setInvalidMosFlag() ; /* ボタンヲ放シテ終ワルカライラナイ */
  2019.  
  2020.         if( ret == NOERR )
  2021.         {
  2022.             MMI_SendMessage( orgDialogId, MM_ATTACH, 1,
  2023.                                              MMI_GetBaseObj() ) ;
  2024.             MMI_SendMessage( orgDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2025.             MG_mosDisp( 1 ) ;
  2026.             MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2027.  
  2028.             MMI_SendMessage( orgDialogId, MM_ERASE, 0 ) ;
  2029.             MMI_SendMessage( orgDialogId, MM_DETACH, 0 ) ;
  2030.  
  2031.             if( orgFlag == TRUE )
  2032.                 goto org01 ;
  2033.         }
  2034.     }
  2035.  
  2036.     /* メニューとボタンを使えるように戻す */
  2037.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2038.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2039.  
  2040.     if( ret )
  2041.             errorCheck( ret ) ;
  2042.     return NOERR ;
  2043. }
  2044.  
  2045.     /*    mvb圧縮ダイアログ表示    */
  2046. int    selectFunc5(kobj, messId, argc, pev, trigger)
  2047. int        kobj ;
  2048. int        messId ;
  2049. int        argc ;
  2050. EVENT    *pev ;
  2051. int        trigger ;
  2052. {
  2053.     int    i, ret, packmode ;
  2054.     char path[100] ;
  2055.     char            *ExtStr0[] = { "*.MVB", NULL } ;
  2056.     char            *ExtStr1[] = { "*.V02", NULL } ;
  2057.  
  2058.     if( kobj == fileMItemId[14] )
  2059.         packmode = 1 ;
  2060.     else
  2061.         packmode = 0 ;
  2062.  
  2063.     /* メニューとボタンを使えないようにする */
  2064.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2065.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2066.  
  2067.     ret = fileSelecter(mvbPath, ExtStr0, "MVBファイル", "選  択", "取  消");
  2068.     if( ret )
  2069.     {
  2070.         /* メニューとボタンを使えるように戻す */
  2071.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2072.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2073.         return NOERR ;
  2074.     }
  2075.     else
  2076.     {
  2077.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2078.         file_kakuchousi_set( path, mvbPath, ".MVB" ) ;
  2079.         for( i=0 ; i<80 ; i++ )
  2080.             mvbPath[i] = path[i] ;
  2081.     }
  2082.  
  2083.     if( packmode )
  2084.     {
  2085.         MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "MVB 瞬 間 圧 縮" ) ;
  2086.         MTL_setAtrObj( pacFilterBar, MS_INACTIVEL40 ) ;
  2087.         MTL_setAtrObj( pacSoftBar, MS_INACTIVEL40 ) ;
  2088.         MTL_setAtrObj( pacFilterNumId, MS_INACTIVEL40 ) ;
  2089.         MTL_setAtrObj( pacSoftNumId, MS_INACTIVEL40 ) ;
  2090.         MTL_resetAtrObj( pacMesId[1], (~MS_DSPONLYL40) ) ;
  2091.         MTL_setAtrObj( pacMesId[1], MS_INACTIVEL40 ) ;
  2092.         MTL_resetAtrObj( pacMesId[2], (~MS_DSPONLYL40) ) ;
  2093.         MTL_setAtrObj( pacMesId[2], MS_INACTIVEL40 ) ;
  2094.     }
  2095.     else
  2096.     {
  2097.         MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "MVB 圧 縮" ) ;
  2098.         MTL_resetAtrObj( pacFilterBar, (~MS_DSPONLYL40) ) ;
  2099.         MTL_resetAtrObj( pacSoftBar, (~MS_DSPONLYL40) ) ;
  2100.         MTL_resetAtrObj( pacFilterNumId, (~MS_DSPONLYL40) ) ;
  2101.         MTL_resetAtrObj( pacSoftNumId, (~MS_DSPONLYL40) ) ;
  2102.         MTL_setAtrObj( pacMesId[1], MS_DSPONLYL40 ) ;
  2103.         MTL_setAtrObj( pacMesId[2], MS_DSPONLYL40 ) ;
  2104.     }
  2105.  
  2106.     if(    ret == NOERR )
  2107.     {
  2108.         int frame, x, y, wt ;
  2109.  
  2110.         r_waku_del() ; /* 枠を閉める */
  2111.         ret = mvb_head_read( mvbPath, &frame, &x, &y, &wt ) ;
  2112.  
  2113.         if( ret == NOERR )
  2114.         {
  2115.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  2116.  
  2117.             ret = fileSelecter( v02Path, ExtStr1,
  2118.                 "VO2ファイル名", "選  択", "取  消" );
  2119.             if( ret )
  2120.             {                /* 中止する */
  2121.                 /* メニューとボタンを使えるように戻す */
  2122.                 MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2123.                 MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2124.                 return NOERR ;
  2125.             }
  2126.             /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2127.             file_kakuchousi_set( path, v02Path, ".V02" ) ;
  2128.             for( i=0 ; i<80 ; i++ )
  2129.                 v02Path[i] = path[i] ;
  2130.         }
  2131.         else goto v10 ;
  2132.  
  2133.         MMI_SendMessage( pacDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2134.         MMI_SendMessage( pacDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2135.  
  2136.         MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2137.  
  2138.         MMI_SendMessage( pacDialogId, MM_ERASE, 0 ) ;    /* 消す */
  2139.         MMI_SendMessage( pacDialogId, MM_DETACH, 0 ) ;
  2140.  
  2141.         if( pacFlag == TRUE )
  2142.         {
  2143.             MMI_SendMessage( pacWaitNumId[0], MM_SETNUMBOX, 5,
  2144.                         frame, 0, frame, 1, 0 ) ;    /* 原画フレーム数設定 */
  2145.                     /*    var, min, max, delta, ptColumn */
  2146.             MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
  2147.                         0, 0, frame, 1, 0 ) ;        /* 圧縮フレーム数設定 */
  2148.                     /*    var, min, max, delta, ptColumn */
  2149.  
  2150.             MMI_SendMessage( pacWaitDialogId, MM_ATTACH,
  2151.                                              1, MMI_GetBaseObj() ) ;
  2152.             MMI_SendMessage( pacWaitDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2153.  
  2154.             SetMouse16( 81, 0xf, 0x8 ) ;    /* マウスカーソルをウエイト表示 */
  2155.  
  2156.             if( v02TableFlag )
  2157.                 ret = mvb_to_v02_t( mvbPath, v02Path,
  2158.                     pacFilter, pacSoft, 6, 0, v02Table, packmode ) ;
  2159.             else
  2160.                 ret = mvb_to_v02( mvbPath, v02Path,
  2161.                     pacFilter, pacSoft, 6, 0, packmode ) ;
  2162.  
  2163.             SetMouse16( 80, 0xf, 0x8 ) ;    /* マウスカーソルを元に */
  2164.  
  2165.             MMI_SendMessage( pacWaitDialogId, MM_ERASE, 0 ) ;    /* 消す */
  2166.             MMI_SendMessage( pacWaitDialogId, MM_DETACH, 0 ) ;
  2167.         }
  2168.     }
  2169.  
  2170.     MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2171.     /* マウスが押されていれば次のイベントを無視 */
  2172.     if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2173.  
  2174.     /* メニューとボタンを使えるように戻す */
  2175. v10:
  2176.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2177.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2178.  
  2179.     if( ret )
  2180.             errorCheck( ret ) ;
  2181.     return NOERR ;
  2182. }
  2183.  
  2184. /*        瞬間圧縮ダイアログ表示        */
  2185. int    selectFunc6(kobj, messId, argc, pev, trigger)
  2186. int        kobj ;
  2187. int        messId ;
  2188. int        argc ;
  2189. EVENT    *pev ;
  2190. int        trigger ;
  2191. {
  2192.     char path[100] ;
  2193.     char            *ExtStr[] = { "*.V02", NULL } ;
  2194.     int i, ret ;
  2195.  
  2196.     /* メニューとボタンを使えないようにする */
  2197.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2198.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2199.  
  2200.     MMI_SendMessage(recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
  2201.                             recFrame, 0, 999999, 1, 0 ) ;
  2202.                     /*    var, min, max, delta, ptColumn */
  2203.  
  2204.     ret = fileSelecter(v02Path, ExtStr, "VO2ファイル", "選  択", "取  消");
  2205.     if(    ret )
  2206.     {
  2207.         /* メニューとボタンを使えるように戻す */
  2208.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2209.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2210.         return NOERR ;
  2211.     }
  2212.     else
  2213.     {
  2214.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2215.         file_kakuchousi_set( path, v02Path, ".V02" ) ;
  2216.         for( i=0 ; i<80 ; i++ )
  2217.             v02Path[i] = path[i] ;
  2218.     }
  2219.  
  2220.     recType = DIRTYPE ;
  2221.     MMI_SendMessage( recMesId[0], MM_SETMSG, 1, "瞬 間 圧 縮" ) ;
  2222.  
  2223.     MMI_SendMessage( recDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2224.  
  2225.     MTL_setFlagObj( recBtnId[recMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
  2226.     MTL_setFlagObj( recBtnId[recSpeed+3], (MS_UNSELECT | MS_TOGGLE) ) ;
  2227.     MTL_setFlagObj( recBtnId[recSize+7], (MS_UNSELECT | MS_TOGGLE) ) ;
  2228.     MTL_setFlagObj( recBtnId[recFreq+12], (MS_UNSELECT | MS_TOGGLE) ) ;
  2229.  
  2230.     MTL_resetAtrObj( recMemoryNumId, (~MS_DSPONLYL40) ) ;    /* 1~2bit clear */
  2231.     MTL_setAtrObj( recMemoryNumId, MS_INACTIVEL40 ) ;    /* 使用不可 */
  2232.  
  2233.     MTL_resetAtrObj( recMesId[1], (~MS_DSPONLYL40) ) ;
  2234.     MTL_setAtrObj( recMesId[1], MS_INACTIVEL40 ) ;
  2235.  
  2236.     MTL_resetAtrObj( recMesId[2], (~MS_DSPONLYL40) ) ;
  2237.     MTL_setAtrObj( recMesId[2], MS_INACTIVEL40 ) ;
  2238.  
  2239.     MTL_resetAtrObj( recMesId[3], (~MS_DSPONLYL40) ) ;
  2240.  
  2241.     MTL_resetAtrObj( recMesId[4], (~MS_DSPONLYL40) ) ;
  2242.     MTL_setAtrObj( recMesId[4], MS_DSPONLYL40 ) ;
  2243.  
  2244.     MTL_resetAtrObj( recMesId[5], (~MS_DSPONLYL40) ) ;
  2245.     MTL_setAtrObj( recMesId[5], MS_DSPONLYL40 ) ;
  2246.  
  2247.     MTL_resetAtrObj( recMesId[6], (~MS_DSPONLYL40) ) ;
  2248.     MTL_setAtrObj( recMesId[6], MS_DSPONLYL40 ) ;
  2249.  
  2250.     MTL_resetAtrObj( recBtnId[12], (~MS_DSPONLYL40) ) ;
  2251.     MTL_resetAtrObj( recBtnId[13], (~MS_DSPONLYL40) ) ;
  2252.     MTL_resetAtrObj( recBtnId[14], (~MS_DSPONLYL40) ) ;
  2253.  
  2254.     MMI_SendMessage( recDialogId, MM_SHOW, 0 ) ;            /* 全体を見せる */
  2255.  
  2256.     SND_elevol_set( 0, recVol, recVol );
  2257.     MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2258.  
  2259.     MMI_SendMessage( recDialogId, MM_ERASE, 0 ) ;
  2260.     MMI_SendMessage( recDialogId, MM_DETACH, 0 ) ;
  2261.  
  2262.     if( recFlag == TRUE )
  2263.     {
  2264.         char    *buf, *ytab, *yytoy, *ctab, *v02tab, *point ;
  2265.         int        d ;
  2266.  
  2267.         r_waku_del() ; /* 枠を閉める */
  2268.  
  2269.         MG_mosDisp( 0 ) ;
  2270.  
  2271.         if( (buf = (char *)TL_malloc( 32768+16384+32768 )) == NULL    )
  2272.             ret = 7 ;
  2273.  
  2274.         if( ret == NOERR )
  2275.         {
  2276.             ytab = buf ;
  2277.             yytoy = ytab + 32768 ;
  2278.             ctab = yytoy + 16384 ;
  2279.             v02tab = v02Table ;
  2280.  
  2281.             point = v02Table + 32768 + 512 ;
  2282.             for( i=0 ; i<32768 ; i++ )
  2283.             {
  2284.                 d = WORD( point + (i<<1) ) ;
  2285.                 BYTE( ctab + i ) = d & 0xff ;
  2286.                 BYTE( ytab + i ) = d >> 8 ;
  2287.             }
  2288.             point = v02Table + 32768 + 512 + 65536 ;
  2289.             for( i=0 ; i<4096 ; i++ )
  2290.             {
  2291.                 WORD( yytoy + ( (i << 2) & 0x3f00 ) + (i & 0x3f) )
  2292.                  = BYTE( point + i ) ;
  2293.             }
  2294.  
  2295.             switch( recMode )
  2296.             {
  2297.             case 0:    
  2298.                 if( recFreq == 2 )
  2299.                     ret = v02_digit_snd_save( v02Path, recFrame,
  2300.                              recSize+1,    7-recSpeed, ytab, ctab, v02tab );
  2301.                 else
  2302.                     ret = v02_digit_snd_save2( v02Path, recFrame,
  2303.                          recSize+1,    recFreq, 7-recSpeed, ytab, ctab, v02tab );
  2304.                 break ;
  2305.             case 1:    
  2306.                 if( recFreq == 2 )
  2307.                     ret = v02_digit_save_0( v02Path, recFrame,
  2308.                              recSize+1,    7-recSpeed, ytab, ctab, v02tab );
  2309.                 else
  2310.                     ret = v02_digit_save_0_2( v02Path, recFrame,
  2311.                          recSize+1,    recFreq, 7-recSpeed, ytab, ctab, v02tab );
  2312.                 break ;
  2313.             case 2:    
  2314.                 ret = v02_snd_save_0( v02Path ) ;
  2315.                 break ;
  2316.             }
  2317.  
  2318.             TL_free( buf ) ;
  2319.         }
  2320.  
  2321.         displayClearAndReset() ;
  2322.         setPalette( guiEgbPtr ) ;
  2323.         diplayRecov() ;
  2324.  
  2325.         if( ret == NOERR )
  2326.         {
  2327.             int frame, x, y, wt ;
  2328.  
  2329.             ret = v02_wide_head_read_and_dsp( v02Path, &frame, &x, &y, &wt, 1, 
  2330.                                                     TL_malloc, TL_free ) ;
  2331.             v02_graph_init( 2, x, y ) ;    /* 倍率にあわせて画面設定 */
  2332.             if( ret == NOERR )
  2333.                 v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  2334.         }
  2335.  
  2336.         MG_mosDisp( 1 ) ;
  2337.  
  2338.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2339.         /* マウスが押されていれば次のイベントを無視 */
  2340.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2341.  
  2342.         if( ret )
  2343.             errorCheck( ret ) ;
  2344.     }
  2345.  
  2346.     /* メニューとボタンを使えるように戻す */
  2347.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2348.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2349.  
  2350.     int s ;                        /* なくてもいいけど念のため */
  2351.     SND_get_elevol_mute( &s ) ;
  2352.     SND_elevol_mute( s & 0xfffffff3 ) ;
  2353.  
  2354.     return NOERR ;
  2355. }
  2356.  
  2357. /*        アフレコダイアログ表示    */
  2358. int    selectFunc7(kobj, messId, argc, pev, trigger)
  2359. int        kobj ;
  2360. int        messId ;
  2361. int        argc ;
  2362. EVENT    *pev ;
  2363. int        trigger ;
  2364. {
  2365.     char path[100] ;
  2366.     char            *ExtStr[] = { "*.V02", NULL } ;
  2367.     int i, ret ;
  2368.  
  2369.     /* メニューとボタンを使えないようにする */
  2370.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2371.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2372.  
  2373.     MMI_SendMessage(recFrameNumId, MM_SETNUMBOX, 5, /* 録画フレーム数変更 */
  2374.                             recFrame, 0, 999999, 1, 0 ) ;
  2375.                     /*    var, min, max, delta, ptColumn */
  2376.  
  2377.     ret = fileSelecter(v02Path, ExtStr, "VO2ファイル", "選  択", "取  消");
  2378.     if(    ret )
  2379.     {
  2380.         /* メニューとボタンを使えるように戻す */
  2381.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2382.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2383.         return NOERR ;
  2384.     }
  2385.     else
  2386.     {
  2387.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2388.         file_kakuchousi_set( path, v02Path, ".V02" ) ;
  2389.         for( i=0 ; i<80 ; i++ )
  2390.             v02Path[i] = path[i] ;
  2391.     }
  2392.  
  2393.     recType = AFRECTYPE ;
  2394.  
  2395.     MMI_SendMessage( recSndDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2396.  
  2397.     MMI_SendMessage( recSndDialogId, MM_SHOW, 0 ) ;            /* 全体を見せる */
  2398.  
  2399.     SND_elevol_set( 0, recVol, recVol );
  2400.     MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2401.  
  2402.     MMI_SendMessage( recSndDialogId, MM_ERASE, 0 ) ;
  2403.     MMI_SendMessage( recSndDialogId, MM_DETACH, 0 ) ;
  2404.  
  2405.     if( recFlag == TRUE )
  2406.     {
  2407.         r_waku_del() ; /* 枠を閉める */
  2408.  
  2409.         MG_mosDisp( 0 ) ;
  2410.  
  2411.         ret = v02_snd_save_0( v02Path ) ;
  2412.  
  2413.         displayClearAndReset() ;
  2414.         setPalette( guiEgbPtr ) ;
  2415.         diplayRecov() ;
  2416.  
  2417.         if( ret == NOERR )
  2418.         {
  2419.             int frame, x, y, wt ;
  2420.  
  2421.             ret = v02_wide_head_read_and_dsp( v02Path, &frame, &x, &y, &wt, 1, 
  2422.                                                     TL_malloc, TL_free ) ;
  2423.             v02_graph_init( 2, x, y ) ;    /* 倍率にあわせて画面設定 */
  2424.             if( ret == NOERR )
  2425.                 v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  2426.         }
  2427.  
  2428.         MG_mosDisp( 1 ) ;
  2429.  
  2430.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2431.         /* マウスが押されていれば次のイベントを無視 */
  2432.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2433.  
  2434.         if( ret )
  2435.             errorCheck( ret ) ;
  2436.     }
  2437.  
  2438.     /* メニューとボタンを使えるように戻す */
  2439.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2440.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2441.  
  2442.     int s ;                        /* なくてもいいけど念のため */
  2443.     SND_get_elevol_mute( &s ) ;
  2444.     SND_elevol_mute( s & 0xfffffff3 ) ;
  2445.  
  2446.     return NOERR ;
  2447. }
  2448.  
  2449. /*        V02再生ダイアログ表示        */
  2450. int    selectFunc8(kobj, messId, argc, pev, trigger)
  2451. int        kobj ;
  2452. int        messId ;
  2453. int        argc ;
  2454. EVENT    *pev ;
  2455. int        trigger ;
  2456. {
  2457.     int    i, ret ;
  2458.     char path[100] ;
  2459.     char            *ExtStr[] = { "*.V02", NULL } ;
  2460.  
  2461.     /* メニューとボタンを使えないようにする */
  2462.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2463.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2464.  
  2465.     ret = fileSelecter(v02Path, ExtStr, "VO2ファイル", "再  生", "取  消");
  2466.     if( ret )
  2467.     {
  2468.         /* メニューとボタンを使えるように戻す */
  2469.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2470.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2471.         return NOERR ;
  2472.     }
  2473.     else
  2474.     {
  2475.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2476.         file_kakuchousi_set( path, v02Path, ".V02" ) ;
  2477.         for( i=0 ; i<80 ; i++ )
  2478.             v02Path[i] = path[i] ;
  2479.     }
  2480.  
  2481.     MMI_SendMessage( plyMesId[0], MM_SETMSG, 1, "VO2 再 生" ) ;
  2482.  
  2483.     if(    ret == NOERR )
  2484.     {
  2485.         int frame, x, y, wt ;
  2486.         int sizememo ;
  2487.         char speed[][20] = {     "毎秒8.6フレーム",
  2488.                                 "毎秒 10フレーム",
  2489.                                 "毎秒 12フレーム",
  2490.                                 "毎秒 15フレーム"
  2491.                         } ;
  2492.         char waku[][20] = {     "128× 96ドット",
  2493.                                  "160×120ドット",
  2494.                                  "192×144ドット",
  2495.                                  "256×192ドット",
  2496.                                  "320×240ドット"
  2497.                        } ;
  2498.         char non[4] = "\0" ;
  2499.  
  2500.         r_waku_del() ; /* 枠を閉める */
  2501.  
  2502.         ret = v02_wide_head_read_and_dsp( v02Path, &frame, &x, &y, &wt, 1, 
  2503.                                                 TL_malloc, TL_free ) ;
  2504.         /* ファイル名,フレーム数,xd,yd,wait */
  2505.         if( ret )
  2506.         {
  2507.             frame = 0 ; x= -1 ; y = -1 ; wt = -1 ;
  2508.         }
  2509.         else
  2510.             v02_graph_init( plyMul+1, x, y ) ;    /* 倍率にあわせて画面設定 */
  2511.  
  2512.         if( frame >= 0 )
  2513.             MMI_SendMessage( plyFrameNumId, MM_SETNUMBOX, 5,
  2514.                             frame, 0, frame, 1, 0 ) ;
  2515.         else
  2516.             MMI_SendMessage( plyFrameNumId, MM_SETNUMBOX, 5,
  2517.                             -1, -1, 0, 1, 0 ) ;
  2518.             /*    var, min, max, delta, ptColumn フレーム数表示 */
  2519.  
  2520.         if( wt >= 4 && wt <= 7 )            /* 毎秒フレーム数表示 */
  2521.             MMI_SendMessage( plyMesId[1], MM_SETMSG, 1, speed[7-wt] ) ;
  2522.         else
  2523.             MMI_SendMessage( plyMesId[1], MM_SETMSG, 1, non ) ;
  2524.  
  2525.         if( x == 128 && y == 96 )            /* 画面の大きさ表示 */
  2526.             MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[0] ) ;
  2527.         else if( x == 160 && y == 120 )
  2528.             MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[1] ) ;
  2529.         else if( x == 192 && y == 144 )
  2530.             MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[2] ) ;
  2531.         else if( x == 256 && y == 192 )
  2532.             MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[3] ) ;
  2533.         else if( x == 320 && y == 240 )
  2534.             MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, waku[4] ) ;
  2535.         else
  2536.             MMI_SendMessage( plyMesId[2], MM_SETMSG, 1, non ) ;
  2537.  
  2538. ply00:    if( ret == NOERR )
  2539.         {
  2540.             sizememo = plyMul ;
  2541.             v_waku_clear( x, y, plyMul+1 ) ;        /* 枠抜き */
  2542.         }
  2543. ply01:    MG_mosDisp( 0 ) ;
  2544.         if( ret == NOERR )
  2545.         {
  2546.             ret = v02_play( v02Path, plyMul+1, plyWait ) ;
  2547.         }
  2548.  
  2549.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2550.         /* マウスが押されていれば次のイベントを無視 */
  2551. //        if( mouseSwCheck() )TL_setInvalidMosFlag() ; /* ボタンヲ放シテ終ワルカライラナイ */
  2552.  
  2553.         if( ret == NOERR )
  2554.         {
  2555.             MMI_SendMessage( plyDialogId, MM_ATTACH, 1,
  2556.                                              MMI_GetBaseObj() ) ;
  2557.  
  2558.             MTL_setFlagObj( plyBtnId[plyMul+0],
  2559.                                      (MS_UNSELECT | MS_TOGGLE) ) ;
  2560.  
  2561.             MMI_SendMessage( plyDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2562.             MG_mosDisp( 1 ) ;
  2563.             MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2564.  
  2565.             MMI_SendMessage( plyDialogId, MM_ERASE, 0 ) ;
  2566.             MMI_SendMessage( plyDialogId, MM_DETACH, 0 ) ;
  2567.  
  2568.             if( plyFlag == TRUE )
  2569.             {
  2570.                 if( sizememo == plyMul )
  2571.                 {
  2572.                     v02_wide_head_read_and_dsp(v02Path, &frame, &x, &y, &wt, 1,
  2573.                                                  TL_malloc, TL_free ) ;
  2574.                         /* ファイル名,フレーム数,xd,yd,wait */
  2575.                     goto ply01 ;
  2576.                 }
  2577.                 else
  2578.                 {
  2579.                     r_waku_del(); /* 枠閉め */
  2580.  
  2581.                     v02_wide_head_read_and_dsp(v02Path, &frame, &x, &y, &wt, 1,
  2582.                                                  TL_malloc, TL_free ) ;
  2583.                         /* ファイル名,フレーム数,xd,yd,wait */
  2584.                     v02_graph_init( plyMul+1, x, y ) ;
  2585.                                             /* 倍率にあわせて画面設定 */
  2586.                     goto ply00 ;
  2587.                 }
  2588.             }
  2589.         }
  2590.     }
  2591.  
  2592.     /* メニューとボタンを使えるように戻す */
  2593.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2594.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2595.  
  2596.     if( ret )
  2597.             errorCheck( ret ) ;
  2598.     return NOERR ;
  2599. }
  2600.  
  2601. /*        V02→V02再圧縮ダイアログ表示    */
  2602. int    selectFunc9(kobj, messId, argc, pev, trigger)
  2603. int        kobj ;
  2604. int        messId ;
  2605. int        argc ;
  2606. EVENT    *pev ;
  2607. int        trigger ;
  2608. {
  2609.     int    i, ret ;
  2610.     char path[100] ;
  2611.     char            *ExtStr0[] = { "*.V02", NULL } ;
  2612.     char            *ExtStr1[] = { "*.V02", NULL } ;
  2613.  
  2614.     /* メニューとボタンを使えないようにする */
  2615.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2616.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2617.  
  2618.     ret= fileSelecter(v02Path2, ExtStr0, "VO2ファイル", "選  択", "取  消");
  2619.     if( ret )
  2620.     {
  2621.         /* メニューとボタンを使えるように戻す */
  2622.         MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2623.         MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2624.         return NOERR ;
  2625.     }
  2626.     else
  2627.     {
  2628.         /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2629.         file_kakuchousi_set( path, v02Path2, ".V02" ) ;
  2630.         for( i=0 ; i<80 ; i++ )
  2631.             v02Path2[i] = path[i] ;
  2632.     }
  2633.  
  2634.     MMI_SendMessage( pacMesId[0], MM_SETMSG, 1, "再 圧 縮" ) ;
  2635.     MTL_resetAtrObj( pacFilterBar, (~MS_DSPONLYL40) ) ;
  2636.     MTL_resetAtrObj( pacSoftBar, (~MS_DSPONLYL40) ) ;
  2637.     MTL_resetAtrObj( pacFilterNumId, (~MS_DSPONLYL40) ) ;
  2638.     MTL_resetAtrObj( pacSoftNumId, (~MS_DSPONLYL40) ) ;
  2639.     MTL_setAtrObj( pacMesId[1], MS_DSPONLYL40 ) ;
  2640.     MTL_setAtrObj( pacMesId[2], MS_DSPONLYL40 ) ;
  2641.  
  2642.     if(    ret == NOERR )
  2643.     {
  2644.         int frame, x, y, wt ;
  2645.  
  2646.         r_waku_del() ; /* 枠を閉める */
  2647.         ret = v02_wide_head_read_and_dsp( v02Path2, &frame, &x, &y, &wt, 1,
  2648.                                      TL_malloc, TL_free ) ;
  2649.  
  2650.         if( ret == NOERR )
  2651.         {
  2652.             v02_graph_init( 2, x, y ) ;    /* 倍率にあわせて画面設定 */
  2653.             v_waku_clear( x, y, 2 ) ;        /* 枠抜き */
  2654.  
  2655.             ret = fileSelecter( v02Path, ExtStr1,
  2656.                 "VO2ファイル名", "選  択", "取  消" );
  2657.             if( ret )
  2658.             {                /* 中止する */
  2659.                 /* メニューとボタンを使えるように戻す */
  2660.                 MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2661.                 MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2662.                 return NOERR ;
  2663.             }
  2664.             /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2665.             file_kakuchousi_set( path, v02Path, ".V02" ) ;
  2666.             for( i=0 ; i<80 ; i++ )
  2667.                 v02Path[i] = path[i] ;
  2668.         }
  2669.         else goto v10 ;
  2670.  
  2671.         if( _strcmpi( v02Path2, v02Path ) == 0 )
  2672.         {
  2673.             ret = 52 ;
  2674.             goto v10 ;    /* file name 重複 */
  2675.         }
  2676.  
  2677.         MMI_SendMessage( pacDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2678.         MMI_SendMessage( pacDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2679.  
  2680.         MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2681.  
  2682.         MMI_SendMessage( pacDialogId, MM_ERASE, 0 ) ;    /* 消す */
  2683.         MMI_SendMessage( pacDialogId, MM_DETACH, 0 ) ;
  2684.  
  2685.         if( pacFlag == TRUE )
  2686.         {
  2687.             MMI_SendMessage( pacWaitNumId[0], MM_SETNUMBOX, 5,
  2688.                         frame, 0, frame, 1, 0 ) ;    /* 原画フレーム数設定 */
  2689.                     /*    var, min, max, delta, ptColumn */
  2690.             MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
  2691.                         0, 0, frame, 1, 0 ) ;        /* 圧縮フレーム数設定 */
  2692.                     /*    var, min, max, delta, ptColumn */
  2693.  
  2694.             MMI_SendMessage( pacWaitDialogId, MM_ATTACH,
  2695.                                              1, MMI_GetBaseObj() ) ;
  2696.             MMI_SendMessage( pacWaitDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2697.  
  2698.             SetMouse16( 81, 0xf, 0x8 ) ;    /* マウスカーソルをウエイト表示 */
  2699.  
  2700.             if( v02TableFlag )
  2701.                 ret = v02_to_v02_t( v02Path2, v02Path,
  2702.                     pacFilter, pacSoft, 6, 0, v02Table ) ;
  2703.             else
  2704.                 ret = v02_to_v02( v02Path2, v02Path,
  2705.                     pacFilter, pacSoft, 6, 0 ) ;
  2706.  
  2707.             SetMouse16( 80, 0xf, 0x8 ) ;    /* マウスカーソルを元に */
  2708.  
  2709.             MMI_SendMessage( pacWaitDialogId, MM_ERASE, 0 ) ;    /* 消す */
  2710.             MMI_SendMessage( pacWaitDialogId, MM_DETACH, 0 ) ;
  2711.         }
  2712.     }
  2713.  
  2714.     MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2715.     /* マウスが押されていれば次のイベントを無視 */
  2716.     if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2717.  
  2718.     /* メニューとボタンを使えるように戻す */
  2719. v10:
  2720.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2721.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2722.  
  2723.     if( ret )
  2724.             errorCheck( ret ) ;
  2725.     return NOERR ;
  2726. }
  2727.  
  2728.  
  2729. /*        V00編集ダイアログ表示        */
  2730. int    editFunc0(kobj, messId, argc, pev, trigger)
  2731. int        kobj ;
  2732. int        messId ;
  2733. int        argc ;
  2734. EVENT    *pev ;
  2735. int        trigger ;
  2736. {
  2737.     int    ret ;
  2738.  
  2739.     /* メニューとボタンを使えないようにする */
  2740.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2741.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2742.  
  2743.     r_waku_del() ; /* 枠を閉める */
  2744.  
  2745.     MMI_SendMessage( editMsgId[0], MM_SETMSG, 1, "VOO 編 集" ) ;
  2746.     editType = V00TYPE ;
  2747.     editDialogSet( 0, 1 ) ;
  2748.     editDialogSet( 1, 1 ) ;
  2749.     editDialogSet( 2, 1 ) ;
  2750.  
  2751.     MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2752.     MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2753.  
  2754. ed01:    MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2755.  
  2756.     if( editFlag == TRUE )
  2757.     {
  2758.         MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  2759.         MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  2760.         MMI_SendMessage( editWaitDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2761.         MMI_SendMessage( editWaitDialogId, MM_SHOW, 0 ) ;
  2762.  
  2763.         ret = v00_merge( v00EditPath[2],
  2764.                         v00EditPath[0], v00EditNum[0][1], v00EditNum[0][2],
  2765.                            v00EditPath[1], v00EditNum[1][1], v00EditNum[1][2] );
  2766.  
  2767.         MMI_SendMessage( editWaitDialogId, MM_ERASE, 0 ) ;
  2768.         MMI_SendMessage( editWaitDialogId, MM_DETACH, 0 ) ;
  2769.         MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2770.         MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2771.  
  2772.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2773.         /* マウスが押されていれば次のイベントを無視 */
  2774.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2775.  
  2776.         if( ret > 1 )    /* 1以下のerrorは見逃す */
  2777.             errorCheck( ret ) ;
  2778.         goto ed01 ;
  2779.     }
  2780.  
  2781.     MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  2782.     MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  2783.  
  2784.     /* メニューとボタンを使えるように戻す */
  2785.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2786.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2787.  
  2788.     return NOERR ;
  2789. }
  2790.  
  2791. /*        MVB編集ダイアログ表示        */
  2792. int    editFunc1(kobj, messId, argc, pev, trigger)
  2793. int        kobj ;
  2794. int        messId ;
  2795. int        argc ;
  2796. EVENT    *pev ;
  2797. int        trigger ;
  2798. {
  2799.     int    ret ;
  2800.  
  2801.     /* メニューとボタンを使えないようにする */
  2802.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2803.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2804.  
  2805.     r_waku_del() ; /* 枠を閉める */
  2806.  
  2807.     MMI_SendMessage( editMsgId[0], MM_SETMSG, 1, "MVB 編 集" ) ;
  2808.     editType = MVBTYPE ;
  2809.     editDialogSet( 0, 1 ) ;
  2810.     editDialogSet( 1, 1 ) ;
  2811.     editDialogSet( 2, 1 ) ;
  2812.  
  2813.     MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2814.     MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2815.  
  2816. ed01:    MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2817.  
  2818.     if( editFlag == TRUE )
  2819.     {
  2820.         MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  2821.         MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  2822.         MMI_SendMessage( editWaitDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2823.         MMI_SendMessage( editWaitDialogId, MM_SHOW, 0 ) ;
  2824.  
  2825.         ret = mvb_merge( mvbEditPath[2],
  2826.                         mvbEditPath[0], mvbEditNum[0][1], mvbEditNum[0][2],
  2827.                            mvbEditPath[1], mvbEditNum[1][1], mvbEditNum[1][2] );
  2828.  
  2829.         MMI_SendMessage( editWaitDialogId, MM_ERASE, 0 ) ;
  2830.         MMI_SendMessage( editWaitDialogId, MM_DETACH, 0 ) ;
  2831.         MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2832.         MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2833.  
  2834.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2835.         /* マウスが押されていれば次のイベントを無視 */
  2836.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2837.  
  2838.         if( ret > 1 )    /* 1以下のerrorは見逃す */
  2839.             errorCheck( ret ) ;
  2840.         goto ed01 ;
  2841.     }
  2842.  
  2843.     MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  2844.     MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  2845.  
  2846.     /* メニューとボタンを使えるように戻す */
  2847.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2848.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2849.  
  2850.     return NOERR ;
  2851. }
  2852.  
  2853. /*        V02編集ダイアログ表示        */
  2854. int    editFunc2(kobj, messId, argc, pev, trigger)
  2855. int        kobj ;
  2856. int        messId ;
  2857. int        argc ;
  2858. EVENT    *pev ;
  2859. int        trigger ;
  2860. {
  2861.     int    ret ;
  2862.  
  2863.     /* メニューとボタンを使えないようにする */
  2864.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2865.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2866.  
  2867.     r_waku_del() ; /* 枠を閉める */
  2868.  
  2869.     MMI_SendMessage( editMsgId[0], MM_SETMSG, 1, "VO2 編 集" ) ;
  2870.     editType = V02TYPE ;
  2871.     editDialogSet( 0, 1 ) ;
  2872.     editDialogSet( 1, 1 ) ;
  2873.     editDialogSet( 2, 1 ) ;
  2874.  
  2875.     MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2876.     MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2877.  
  2878. ed01:    MMI_ExecSystem() ;        /* Dialog表示へ・・・イベントループ */
  2879.  
  2880.     if( editFlag == TRUE )
  2881.     {
  2882.         MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  2883.         MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  2884.         MMI_SendMessage( editWaitDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2885.         MMI_SendMessage( editWaitDialogId, MM_SHOW, 0 ) ;
  2886.  
  2887.         ret = v02_merge( v02EditPath[2],
  2888.                         v02EditPath[0], v02EditNum[0][1], v02EditNum[0][2],
  2889.                            v02EditPath[1], v02EditNum[1][1], v02EditNum[1][2] );
  2890.  
  2891.         MMI_SendMessage( editWaitDialogId, MM_ERASE, 0 ) ;
  2892.         MMI_SendMessage( editWaitDialogId, MM_DETACH, 0 ) ;
  2893.         MMI_SendMessage( editDialogId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  2894.         MMI_SendMessage( editDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  2895.  
  2896.         MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2897.         /* マウスが押されていれば次のイベントを無視 */
  2898.         if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2899.  
  2900.         if( ret > 1 )    /* 1以下のerrorは見逃す */
  2901.             errorCheck( ret ) ;
  2902.         goto ed01 ;
  2903.     }
  2904.  
  2905.     MMI_SendMessage( editDialogId, MM_ERASE, 0 ) ;
  2906.     MMI_SendMessage( editDialogId, MM_DETACH, 0 ) ;
  2907.  
  2908.     /* メニューとボタンを使えるように戻す */
  2909.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2910.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2911.  
  2912.     return NOERR ;
  2913. }
  2914.  
  2915. /*        ビデオチェック    */
  2916. /*    initDataIVDDSK:editMItemId[3]:MJ_MITEML40の呼び出し関数    */
  2917. int    editFunc3(kobj, messId, argc, pev, trigger)
  2918. int        kobj ;
  2919. int        messId ;
  2920. int        argc ;
  2921. EVENT    *pev ;
  2922. int        trigger ;
  2923. {
  2924.     int ret ;
  2925.  
  2926.     /* メニューとボタンを使えないようにする */
  2927.     MTL_setAtrObj( menubarId, MS_DSPONLYL40 ) ;
  2928.     MTL_setAtrObj( SDKmItemId[2], MS_INACTIVEL40 ) ;
  2929.  
  2930.     r_waku_del() ; /* 枠を閉める */
  2931.  
  2932.     MG_mosDisp( 0 ) ;
  2933.     ret = video_snd_check() ;
  2934.  
  2935.     displayClearAndReset() ;
  2936.     setPalette( guiEgbPtr ) ;
  2937.     diplayRecov() ;
  2938.     MG_mosDisp( 1 ) ;
  2939.  
  2940.     MMI_FlushEvnt() ;    /* イベントをフラッシュ */
  2941.     /* マウスが押されていれば次のイベントを無視 */
  2942.     if( mouseSwCheck() )TL_setInvalidMosFlag() ;
  2943.  
  2944.     if( ret )
  2945.         errorCheck( ret ) ;
  2946.  
  2947.     /* メニューとボタンを使えるように戻す */
  2948.     MTL_resetAtrObj( menubarId, (~MS_DSPONLYL40) ) ;
  2949.     MTL_resetAtrObj( SDKmItemId[2], (~MS_INACTIVEL40) ) ;
  2950.  
  2951.     return NOERR ;
  2952. }
  2953.  
  2954.  
  2955. /*
  2956.  
  2957.         ここからは 汎用サブルーチン
  2958.  
  2959. */
  2960.  
  2961. /* 画面を消して、画面モードを標準状態(& writePage=0)にして、表示する */
  2962.  
  2963. int displayClearAndReset()
  2964. {
  2965.     EGB_displayPage(guiEgbPtr,0,0);
  2966.     EGB_resolution(guiEgbPtr,0,3);        /* モード3,10合成 */
  2967.     EGB_resolution(guiEgbPtr,1,10);
  2968.     EGB_writePage(guiEgbPtr,0);            /* mode3に書き込み */
  2969.     EGB_paintMode(guiEgbPtr,0x22);
  2970.     EGB_writeMode(guiEgbPtr,0);
  2971.     EGB_displayPage(guiEgbPtr,0,3);
  2972.  
  2973.     return 0;
  2974. }
  2975.  
  2976. /* 画面復帰 */
  2977.  
  2978. int diplayRecov()
  2979. {
  2980.     WINCTRL *pctrl ;            /* 画面復帰 */
  2981.     WINCLIP *pwclp ;
  2982.  
  2983.     EGB_displayPage(guiEgbPtr,0,0);
  2984.  
  2985.     MMI_GetControl( &pctrl ) ;
  2986.     pwclp = WIN_getClipMemory( &pctrl->bound, NULL ) ;
  2987.     MMI_SendMessage( MMI_GetBaseObj(), MM_UPDATE, 1, pwclp ) ;
  2988.     WIN_freeClipMemory( pwclp ) ;
  2989.     setPalette( guiEgbPtr ) ;
  2990.  
  2991.     EGB_displayPage(guiEgbPtr,0,3);
  2992.  
  2993.     return NOERR ;
  2994. }
  2995.  
  2996. /* name , kakuchou[拡張子(.***)] → fullname = name + kakuchou */
  2997.  
  2998. file_kakuchousi_set( fullname, name, kakuchou )
  2999. char fullname[], name[], kakuchou[];
  3000. {
  3001.     int i;
  3002.  
  3003.     for( i=0 ; i<76 ; i++ ){
  3004.         fullname[i] = name[i];
  3005.         if( name[i] == '.' || name[i] == (char)0 )goto mov01;
  3006.     }
  3007.     return 55;        /* bad file name */
  3008. mov01:    if( i == 0 )return 55;
  3009.     if( name[i-1] == '\\' )return 55;
  3010.     DWORD( fullname + i ) = DWORD( kakuchou );
  3011.     fullname[i+4] = (char)0;
  3012.     return 0;
  3013. }
  3014.  
  3015. /* マウス */
  3016.  
  3017. mouse(mmd)
  3018. int mmd;
  3019. {
  3020.     static int s, x, y;
  3021.  
  3022.     do{
  3023.         MOS_rdpos(&s,&x,&y);
  3024.     }while( s == 0 );
  3025.     if( mmd == 0 ){
  3026.         do{
  3027.             MOS_rdpos(&s,&x,&y);
  3028.         }while( s );
  3029.     }
  3030.     return 0;
  3031. }
  3032.  
  3033. /* マウスボタンチェック */
  3034.  
  3035. mouseSwCheck()
  3036. {
  3037.     int sw ;
  3038.  
  3039.     int x, y ;
  3040.  
  3041.     MOS_rdpos( &sw, &x, &y ) ;
  3042.     return sw ;
  3043. }
  3044.  
  3045. /* 圧縮中に途中経過(圧縮済フレーム数)を表示するルーチン */
  3046.  
  3047. v_cmp_frame_dsp( frame )
  3048. int frame ;
  3049. {
  3050.     MMI_SendMessage( pacWaitNumId[1], MM_SETNUMBOX, 5,
  3051.                 frame+1, 0, frame+1, 1, 0 ) ;    /* 原画フレーム数設定 */
  3052.         /*    var, min, max, delta, ptColumn */
  3053.  
  3054.     MMI_SendMessage( pacWaitNumId[1], MM_SHOW, 0 ) ;    /* 見せる */
  3055.  
  3056.     return 0 ;
  3057. }
  3058.  
  3059. /* 制限つき枠くり抜き */
  3060.  
  3061. v_waku_clear( xd, yd, zoom )
  3062. int xd, yd, zoom ;
  3063. {
  3064.     HYPER hyp ;
  3065.     int x0, y0, x1, y1 ;
  3066.  
  3067.         /* 続けて呼ばれてもいいように一端DETACHする */
  3068.     MMI_SendMessage( wakuDialogId, MM_DETACH, 0 ) ;
  3069.     MMI_SendMessage( wakuDialogId, MM_ATTACH, 1, baseDialogId ) ;
  3070.  
  3071.     MMI_SendMessage( wakuDialogId, MM_GETHYPER, 1, &hyp ) ;
  3072.  
  3073.     x0 = (640/zoom - xd) / 2 * zoom ;
  3074.     y0 = (480/zoom - yd) / 2 * zoom ;
  3075.     x1 = x0 + xd*zoom - 1 ;
  3076.     y1 = y0 + yd*zoom - 1 ;
  3077.     if( x0 < 0 )x0 = 0 ;
  3078.     if( y0 < 20 )y0 = 20 ;
  3079.     if( x1 > 639 )x1 = 639 ;
  3080.     if( y1 > 479 )y1 = 479 ;
  3081.  
  3082.     hyp.fr.lupx = x0 ;
  3083.     hyp.fr.lupy = y0 ;
  3084.     hyp.fr.rdwx = x1 ;
  3085.     hyp.fr.rdwy = y1 ;
  3086.     hyp.clr.fr = 0 ;
  3087.     hyp.clr.back = 0 ;
  3088.     hyp.clr.ch = 0 ;
  3089.     hyp.atrm = 0 ;
  3090.  
  3091.     MMI_SendMessage( wakuDialogId, MM_SETHYPER, 1, &hyp ) ;
  3092.     MTL_setAtrObj( wakuDialogId, MS_DSPONLYL40 ) ;
  3093.     MMI_SendMessage( wakuDialogId, MM_SHOW, 0 ) ;
  3094.  
  3095.     return 0 ;
  3096. }
  3097.  
  3098. r_waku_del()
  3099. {
  3100.     MMI_SendMessage( wakuDialogId, MM_ERASE, 0 ) ;
  3101.     MMI_SendMessage( wakuDialogId, MM_DETACH, 0 ) ;
  3102.     return NOERR ;
  3103. }
  3104.  
  3105. /*    ファイル選択    */
  3106. int    fileSelecter( path, ExtStr, title, exec, cncl )
  3107. char    *path ;
  3108. char    **ExtStr ;
  3109. char    *title ;
  3110. char    *exec ;
  3111. char    *cncl ;
  3112. {
  3113.     char pathName[100], name[20] ;
  3114.     int                 i, j, n ;
  3115.     unsigned int    MSlctCnt ;
  3116.     int          Atr, ret, ret2 ;
  3117.     int    alertobj ;      /*   現在のALERTOBJを退避する変数    */
  3118.  
  3119.     ret2 = NOERR ;
  3120.  
  3121.     n = 0 ;
  3122.     for( i=0 ; i<79 ; i++ )
  3123.     {
  3124.         pathName[i] = path[i] ;
  3125.         if( path[i] == '\\' )
  3126.             n++ ;
  3127.         if( path[i] == '\0' )
  3128.             break ;
  3129.     }
  3130.     if( n <= 1 )
  3131.     {
  3132.         for( i=i ; i>=0 ; i-- )
  3133.         {
  3134.             if( path[i] == '\\' )
  3135.             {
  3136.                 i++ ;
  3137.                 pathName[i] = '\0' ;
  3138.                 break ;
  3139.             }
  3140.         }
  3141.         for( j=0 ; j<13 ; j++ )
  3142.         {
  3143.             name[j] = path[i+j] ;
  3144.         }
  3145.     }
  3146.     else
  3147.     {
  3148.         for( i=i ; i>=0 ; i-- )
  3149.         {
  3150.             if( path[i] == '\\' )
  3151.             {
  3152.                 pathName[i] = '\0' ;
  3153.                 break ;
  3154.             }
  3155.         }
  3156.         for( j=0 ; j<13 ; j++ )
  3157.         {
  3158.             name[j] = path[i+1+j] ;
  3159.         }
  3160.     }
  3161.  
  3162.     ret = FDG_SetFileText( name ) ;
  3163.     ret = FDG_SetTitle( title, exec, cncl ) ;
  3164.  
  3165.     alertobj = MMI_GetAlertObj() ;  /*  現在のALERTOBJを退避     */
  3166.     MMI_SetAlertObj( FDG_GetMainID() ) ;
  3167.  
  3168.     ret = FDG_DspFileDlg(MMI_GetBaseObj(), FDG_FILEONLY | FDG_TEXT,
  3169.          pathName, ExtStr,    &MSlctCnt) ;
  3170.     if( ret < 0 )    /* PATHが間違ってる場合はカレントディレクトリで */
  3171.     {
  3172.         name[0] = '\0' ;
  3173.         ret = FDG_SetFileText( name ) ;
  3174.         ret = FDG_DspFileDlg(MMI_GetBaseObj(), FDG_FILEONLY | FDG_TEXT,
  3175.              NULL, ExtStr,    &MSlctCnt) ;
  3176.     }
  3177.  
  3178.     MMI_SetAlertObj( alertobj ) ;  /*  ALERTOBJを元に戻す        */
  3179.  
  3180.     if( (ret == 1) && (MSlctCnt > 0) )    /*    正しくファイル名を収得したか?    */
  3181.     {
  3182.         FDG_GetPathName( path, &Atr, 0 ) ;
  3183.     }
  3184.     else
  3185.     {
  3186.         ret2 = 1 ;
  3187.     }
  3188.     ret = FDG_RecovCurDir() ;
  3189.     return ret2 ;
  3190. }
  3191.  
  3192. /*    パレット設定 (パレットが設定されてなければgreen系に固定)    */
  3193. int    setPalette( char *ework )
  3194. {
  3195.     char    para[16*8+4] ;
  3196.     int        ptr, colnum ;
  3197.  
  3198.     void     set1Pal( int col, int b, int r, int g )
  3199.     {
  3200.         DWORD(para + ptr) = col ;
  3201.         BYTE(para + ptr + 4) = b * 16 ;
  3202.         BYTE(para + ptr + 5) = r * 16 ;
  3203.         BYTE(para + ptr + 6) = g * 16 ;
  3204.         BYTE(para + ptr + 7) = 0 ;
  3205.         ptr += 8 ;
  3206.     }
  3207.  
  3208. //    EGB_getTmenuPalette( para ) ;
  3209. //    colnum = DWORD(para) ;
  3210.  
  3211.     colnum = 0 ;        /* 強制的に色設定にしてしまう 1993 12 */
  3212.  
  3213.     if( colnum == 6 )    ptr = 52 ;
  3214.     else                ptr = 4 ;
  3215.     if( colnum != 16 )
  3216.     {
  3217.         set1Pal( 2, 4, 12, 6 ) ;
  3218.         set1Pal( 3, 5, 5, 5 ) ;        //         set1Pal( 3, 10, 15, 12 ) ;
  3219.         set1Pal( 4, 9, 9, 9 ) ;
  3220.         set1Pal( 5, 7, 0, 12 ) ;
  3221.         set1Pal( 10, 0, 13, 0 ) ;
  3222.         set1Pal( 11, 10, 0, 0 ) ;
  3223.         set1Pal( 12, 0, 0, 15 ) ;
  3224.         set1Pal( 13, 15, 0, 15 ) ;
  3225.         set1Pal( 14, 0, 15, 13 ) ;
  3226.         if( colnum != 6 )
  3227.         {        /* メニュー色(green系) */
  3228.             set1Pal( 1, 4, 4, 8 ) ;
  3229.             set1Pal( 6, 12, 12, 12 ) ;
  3230.             set1Pal( 7, 7, 7, 7 ) ;
  3231.             set1Pal( 8, 2, 2, 2 ) ;
  3232.             set1Pal( 9, 8, 10, 12 ) ;    /* file selector */
  3233.             set1Pal( 15, 15, 15, 15 ) ;
  3234.         }
  3235.         DWORD(para + 0) = 15 ;
  3236.     }
  3237.     else
  3238.         DWORD(para + 0) = colnum ;
  3239.     EGB_palette( ework, 1, para ) ;
  3240.  
  3241.     return NOERR ;
  3242. }
  3243.  
  3244. /* v02 table set */
  3245. int initV02Table( ac, av, k, name )
  3246. char ac,*av[];
  3247. char *name ;
  3248. int k ;                    /* 色の濃さ */
  3249. {
  3250.     FILE *fp ;
  3251.     char head[256] ;
  3252.     char path[100] ;
  3253.     int i, j, ret ;
  3254.     char s ;
  3255.  
  3256.     if( ac >= 2 )
  3257.     {
  3258.         for( j=1 ; j<ac ; j++ )
  3259.         {
  3260.             if( av[j][0] == '-' )
  3261.             {
  3262.                 s = av[j][1] ;
  3263.                 if( s >= 0x61 && s <= 0x7a )s = s & 0xdf;
  3264.  
  3265.                 if( s == 'C' )
  3266.                 k = atoi( av[j] + 2 ) ;
  3267.             }
  3268.         }
  3269.     }
  3270.     if( k < 0 ) k = 0 ;
  3271.     if( k > 12 ) k = 12 ;
  3272.  
  3273.     /* v02tableの用意 */
  3274.  
  3275.     ret = 0 ;
  3276. //    if( ac < 1 )
  3277. //    {
  3278. //        v02TableFlag = 0;            /* tableのpathの取得ができない */
  3279. //        return NOERR ;
  3280. //    }
  3281.     if( (v02Table = (char *)TL_malloc( 32768 + 512 + 65536 + 4096 )) == NULL )
  3282.     {
  3283.         v02TableFlag = 0;            /* out of memory */
  3284.         return NOERR ;
  3285.     }
  3286.     else
  3287.         v02TableFlag = -1;
  3288.  
  3289.     file_kakuchousi_set( path, name, ".TAB" ) ;
  3290.  
  3291.     if( ( fp = fopen( path, "rb" ) ) == NULL )
  3292.         ret = 1 ;
  3293.     else
  3294.     {
  3295.         if( fread( head, 256, 1, fp ) < 1 )
  3296.             ret = 1 ;
  3297.         else
  3298.         {
  3299.             if( DWORD( head ) != 0x42544456 )    /* 0x42544456 = VDTB */
  3300.                 ret = 1 ;
  3301.             else
  3302.             {
  3303.                 if( fread( v02Table, 32768 + 512 + 65536 + 4096, 1, fp ) < 1 )
  3304.                     ret = 1 ;
  3305.             }
  3306.         }
  3307.         fclose(fp) ;
  3308.     }
  3309.     if( ret )
  3310.     {
  3311.         EGB_displayPage(guiEgbPtr,0,0);
  3312.         EGB_resolution(guiEgbPtr,1,5);            /* page1 mode5 */
  3313.         EGB_writePage(guiEgbPtr,1);
  3314.         EGB_displayStart(guiEgbPtr,1,0,0);
  3315.         EGB_displayStart(guiEgbPtr,2,2,2);
  3316.         EGB_displayStart(guiEgbPtr,3,256,192);
  3317.         EGB_displayStart(guiEgbPtr,0,32,24);
  3318.         EGB_writePage(guiEgbPtr,0);
  3319.         setPalette( guiEgbPtr ) ;
  3320.  
  3321.         MMI_SendMessage( tableSetDialogId, MM_ATTACH,
  3322.                                              1, MMI_GetBaseObj() ) ;
  3323.         MMI_SendMessage( tableSetDialogId, MM_SHOW, 0 ) ;    /* 見せる */
  3324.  
  3325.         MG_mosDisp( 0 ) ;
  3326.  
  3327.         EGB_displayPage(guiEgbPtr,1,3);
  3328.         direct_v02_table( k, v02Table ) ;    /* 色の濃さはk */
  3329.         if( ( fp = fopen( path, "wb" ) ) != NULL )
  3330.         {
  3331.             for( i=0 ; i<256 ; i += 4 )
  3332.                 DWORD( head + i ) = 0 ;
  3333.             DWORD( head ) = 0x42544456 ;
  3334.             DWORD( head+4 ) = k ;
  3335.             fwrite( head, 256, 1, fp ) ;
  3336.             fwrite( v02Table, 32768 + 512 + 65536 + 4096, 1, fp ) ;
  3337.             fclose(fp) ;
  3338.         }
  3339.         displayClearAndReset() ;
  3340.         setPalette( guiEgbPtr ) ;
  3341.  
  3342.         MMI_SendMessage( tableSetDialogId, MM_ERASE, 0 ) ;    /* 消す */
  3343.         MMI_SendMessage( tableSetDialogId, MM_DETACH, 0 ) ;
  3344.  
  3345.         MG_mosDisp( 1 ) ;
  3346.     }
  3347.  
  3348.     return NOERR ;
  3349. }
  3350.  
  3351. /*    2画面合成のためのマウス表示関数    */
  3352. int    mouseDsp( int num )
  3353. {
  3354.     SetMouse16( num, 0xf, 0x8 ) ;    /* マウスカーソルが透けないように */
  3355.     return    NOERR ;
  3356. }
  3357.  
  3358. /* 起こされた時のセット */
  3359.  
  3360. int wakeSet()
  3361. {
  3362.     r_waku_del() ;
  3363.  
  3364. /*
  3365.     WINCTRL *pctrl ;
  3366.     WINCLIP *pwclp ;
  3367.  
  3368.     MMI_GetControl( &pctrl ) ;
  3369.     pwclp = WIN_getClipMemory( &pctrl->bound, NULL ) ;
  3370.     MMI_SendMessage( MMI_GetBaseObj(), MM_UPDATE, 1, pwclp ) ;
  3371.     WIN_freeClipMemory( pwclp ) ;
  3372.     setPalette( guiEgbPtr ) ;
  3373. */
  3374.  
  3375. //    EGB_writePage(guiEgbPtr,1);
  3376. //    EGB_color(guiEgbPtr,1,0x8000);
  3377. //    EGB_clearScreen(guiEgbPtr);
  3378. //    EGB_writePage(guiEgbPtr,0);
  3379.  
  3380.     return NOERR ;
  3381. }
  3382.  
  3383. /* スリープの前のセット */
  3384.  
  3385. int sleepSet()
  3386. {
  3387. //    r_waku_del() ;
  3388.     return NOERR ;
  3389. }
  3390.  
  3391. /*    終了処理    */
  3392. int    quitFunc()
  3393. {
  3394.     if( v02TableFlag )
  3395.         TL_free( v02Table ) ;
  3396.  
  3397.     EGB_displayPage( guiEgbPtr, 0, 0 );
  3398.  
  3399.     EGB_writePage( guiEgbPtr, 1 );
  3400.     EGB_color( guiEgbPtr, 1, 0 ) ;
  3401.     EGB_clearScreen( guiEgbPtr ) ;        /*    ページをきれいにしよう    */
  3402.  
  3403.     EGB_writePage( guiEgbPtr, 0 );
  3404.     EGB_color( guiEgbPtr, 1, 0 ) ;
  3405.     EGB_clearScreen( guiEgbPtr ) ;        /*    ページをきれいにしよう    */
  3406.  
  3407.     MMI_SetHaltFlag( TRUE ) ;
  3408.     return NOERR ;
  3409. }
  3410.  
  3411. /*    終了可能なら終了する処理    */
  3412. int    quitFunc2()
  3413. {
  3414.     /* menubarId が MS_DSPONLYL40 なら何かの作業中で終了不可 */
  3415.  
  3416.     if( (MTL_checkAtrObj( menubarId, MS_DSPONLYL40 ) == 0) )
  3417.     {
  3418.         if( v02TableFlag )
  3419.             TL_free( v02Table ) ;
  3420.  
  3421.         EGB_writePage( guiEgbPtr, 1 );
  3422.         EGB_color( guiEgbPtr, 1, 0 ) ;
  3423.         EGB_clearScreen( guiEgbPtr ) ;        /*    ページをきれいにしよう    */
  3424.  
  3425.         EGB_writePage( guiEgbPtr, 0 );
  3426.         EGB_color( guiEgbPtr, 1, 0 ) ;
  3427.         EGB_clearScreen( guiEgbPtr ) ;        /*    ページをきれいにしよう    */
  3428.  
  3429.         MMI_SetHaltFlag( TRUE ) ;
  3430.         return NOERR ;
  3431.     }
  3432.     return ILLEGAL_FUNCTION ;
  3433. }
  3434.  
  3435. /*    あばうと表示    */
  3436. int    aboutFunc()
  3437. {
  3438.     MMI_SendMessage( alertId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  3439.     MMI_SendMessage( alertId, MM_SHOW, 0 ) ;
  3440.     return NOERR ;
  3441. }
  3442.  
  3443. /*    あばうと表示確認    */
  3444. int    aboutOKFunc(kobj, messId, argc, pev, trigger)
  3445. int        kobj ;
  3446. int        messId ;
  3447. int        argc ;
  3448. EVENT    *pev ;
  3449. int        trigger ;
  3450. {
  3451.     MMI_SendMessage( alertId, MM_ERASE, 0 ) ;
  3452.     MMI_SendMessage( alertId, MM_DETACH, 0 ) ;
  3453.     return NOERR ;
  3454. }
  3455.  
  3456. /* error 表示ルーチン */
  3457. int errorCheck(number)
  3458. int number;
  3459. {
  3460.     MG_mosDisp( 1 ) ;
  3461.  
  3462.     MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3463.          "エラーが発生しました。" ) ;
  3464.     if( number == 4 )
  3465.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3466.          "データが見つかりません。" ) ;
  3467.     if( number == 7 )
  3468.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3469.          "メモリが足りません。" ) ;
  3470.     if( number == 52 )
  3471.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3472.          "ファイル名が重複しています。" ) ;
  3473.     if( number == 54 )
  3474.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3475.          "フレームオーバーです。" ) ;
  3476.     if( number == 55 )
  3477.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3478.          "ファイル名が正しくありません。" ) ;
  3479.     if( number == 58 )
  3480.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3481.          "データ形式が正しくありません。" ) ;
  3482.     if( number == 1 )
  3483.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3484.          "ロードできませんでした。" ) ;
  3485.     if( number == 2 )
  3486.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3487.          "セーブできませんでした。" ) ;
  3488.     if( number == 1000 )
  3489.         MMI_SendMessage( errormessage[0], MM_SETMSG, 1,
  3490.          "データの形式がそろってません。" ) ;
  3491.  
  3492.     MMI_SendMessage( errorId, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  3493.     MMI_SendMessage( errorId, MM_SHOW, 0 ) ;
  3494.  
  3495.     MMI_ExecSystem() ;
  3496.  
  3497.     MMI_SendMessage( errorId, MM_ERASE, 0 ) ;
  3498.     MMI_SendMessage( errorId, MM_DETACH, 0 ) ;
  3499.  
  3500.     return NOERR;
  3501. }
  3502.  
  3503. /*    エラー表示確認    */
  3504. int    errorOKFunc(kobj, messId, argc, pev, trigger)
  3505. int        kobj ;
  3506. int        messId ;
  3507. int        argc ;
  3508. EVENT    *pev ;
  3509. int        trigger ;
  3510. {
  3511.     MMI_SetHaltFlag( TRUE ) ;
  3512.     return NOERR ;
  3513. }
  3514.  
  3515.